?

Log in

No account? Create an account

Previous Entry | Next Entry

Как чинят ЖЖ

ЖЖ всю последнюю неделю работает очень медленно. Причина, как здесь говорится, в самой обычной перегрузке компьютерной системы. Во-первых, программная ошибка: данные лишний раз читаются с диска, хотя они уже находятся в памяти. Во-вторых, просто не достаточно пропускной способности машин, не рассчитали на рост нагрузки. Обещают начать ремонт в грядущий понедельник, а мы пока посмотрим на новую технологию постоянной памяти, которую применяет ЖЖ. Параметры ее впечатляющи (по ссылке объяснения в первом комментарии).

Самый современный диск в домашнем компьютере читает и записывает данные не быстрее 40 МБ/с. Скорость работы дорогих дисков для сервера выше, но не намного (не на порядок). Чтобы увеличить скорость обмена, данные раскладываются в массивы параллельно работающих дисков, так что при записи данные дробятся на несколько фрагментов, которые записываются на несколько дисков одновременно.

Однако, и эта технология имеет ограничения: можно увеличить скорость в несколько раз, но не более того, ведь дробить информацию на сотни дисков не практично. Резкое увеличение скорости доступа возможно, если вместо обычных крутящихся магнитных дисков подключать устройства, хранящие информацию в полупроводниковых микросхемах — FLASH (Такие «диски» называются SSD, буквально «твердотельные накопители»). Цена таких устройств на бит хранимой информации высока, а объем относительно мал, но намного выше и скорость доступа.

Однако, здесь начинается следующая проблема: контроллер записи/чтения диска — «посредник» между диском и оперативной памятью вычислительной машины — конструируется в расчете на обычный, относительно «медленный» диск. Обычные контроллеры не справляются с высокой скоростью SSD, просто не способны поставлять столько данных в секунду, сколько диск может записать. Получается, что контроллер делается узким местом, не позволяет использовать дорогие быстрые накопители на полную мощность.

Решение простое и изящное. Нужно просто поместить микросхемы FLASH на одну плату со специальным, сконструированным в расчете на них, контроллером. Такая плата вставляется прямо в шину компьютера, обеспечивая максимально быстрый обмен данными с накопителем. Насколько быстрый?



ЖЖ пользуется накопителями фирмы Fusion-io. Более медленный и объемистый вариант накопителя хранит 640 ГБ данных и обеспечивает доступ со скоростью 1 ГБ/с на запись и 1,5 ГБ на чтение. Быстрый вариант вдвое меньшей емкости 320 ГБ обеспечивает и чтение, и запись со скоростью 1,5 ГБ/с. В серверах ЖЖ ставятся по два накопителя, фактически работая с предельной скоростью внутренней шины компьютера — дальнейшее ускорение просто не имеет смысла.

Стоят оба устройства как простенький автомобиль — 13 тыс. долл. каждое. Это дороже дискового массива той же емкости и скорости, но, во-первых, занимает много меньше места, во-вторых, потребляет гораздо меньше энергии, и, в-третьих, надежнее.

К слову, энергопотребление не зря оказалось в списке критических достоинств технологии. Цена электроэнергии весьма чувствительна при эксплуатации больших вычислительных центров. Хорошо известно, что Google открывает свои центры обработки данных возле электростанций — там, где цена электроэнергии ниже!

Comments

( 21 comments — Leave a comment )
_aristeo
Apr. 9th, 2010 10:19 pm (UTC)
Но у SSD, насколько мне известно, существует предел количества операций чтения/записи, чего нет у отдельных винчестеров. Или не так?
miollnyr
Apr. 9th, 2010 10:23 pm (UTC)
+1
Это значит что и изнашиваются они в быстрее чем обычные HDD.

fat_crocodile
Apr. 9th, 2010 10:36 pm (UTC)
AFAIK, хитрый контроллер переименовывает сектора так, чтобы незаметно распределить нагрузку по всему диску. Иначе популярные файлы (своп, например) прожигали бы в диске дырку за месяц эксплуатации. А так ничего, держатся.
fregimus
Apr. 10th, 2010 12:21 am (UTC)
Только записи, не чтения.

Все ведь изнашивается. Не знаю, как решают проблему перезаписи. Кажется, недавно говорили о долговечности порядка 100 тыс. перезаписей для FLASH. Интересно прикинуть, сколько раз за время жизни диска обычно перезаписывается один сектор?

Наверное, зависит от режима работы с информацией. Для ЖЖ, где информация вводится однажды, а затем редко меняется — весьма подходящее применение.
fat_crocodile
Apr. 10th, 2010 12:38 am (UTC)
> Интересно прикинуть, сколько раз за время жизни диска обычно перезаписывается один сектор?

Очень неравномерно.

Сектора, в которых хранится таблица файлов, перезаписываются гораздо чаще.
Или со списком свободных блоков каким-нибудь (если NTFS, например). Или своп-файл.

Я потому и написал про перемещение секторов, конечно, имел ввиду при перезаписи, чтение не имеет такого деструктивного эффекта.
fregimus
Apr. 10th, 2010 12:45 am (UTC)
Наверное, для оценки имеет смысл говорить о среднем числе операций записи. Читал — не знаю, насколько это правда — что аппаратура SSD перенаправляет запись в разные секторы, чтобы выравнивать число операций записи на сектор. Дело давно было, не знаю, является ли это до сих пор проблемой.

Своп-файл: когда вы покупаете накопители по 13 грандов, рекомендуется увеличить RAM, чтобы свопинг происходил не так интенсивно — независимо от того, ограниченное ли время жизни накопителей.

Таблицы файлов тоже могут быть практически неизменными, ведь сервер баз данных может содержать всего несколько файлов во весь диск размером. Другое дело, что внутри этих больших файлов неизбежно организуются подобные индексные структуры — выше себя все равно не прыгнешь.
silpol
Apr. 10th, 2010 08:31 am (UTC)
не совсем - для ЖЖ больше подходит унос в архивный (более медленный но серьезно более дешевый) носитель того, что относительно долго не читалось: таким методом почти не увеличиваются расходы на полосу пропускания за пределы контура, но зато серьезно дешевеет носитель (а флэш пока еще не дешев)
fregimus
Apr. 10th, 2010 08:35 am (UTC)
Да, пожалуй. Не представляю, какую стратегию они используют.
silpol
Apr. 10th, 2010 09:38 am (UTC)
я не знаю за ЖЖ, всегда лень было лезть в перловый код :)
fat_crocodile
Apr. 9th, 2010 10:38 pm (UTC)
> Цена электроэнергии весьма чувствительна при эксплуатации больших вычислительных центров.

Да, я когда-то с огромным удивлением узнал, что _основные_ расходы Яндекса -- это электричество.

Интересный пример перехода количества в качество, для обычного пользователя стоимость электроэнергии, потребляемой ПК пренебрежимо мала.
fregimus
Apr. 10th, 2010 12:24 am (UTC)
Зависит от пользователей. У некоторых (например, данного) серверы стоят в гардеробе и считают почти что непрерывно на все 100% всеми 4 процессорами — тут уже чувствительно, где-то 120 ватт каждый.
fat_crocodile
Apr. 10th, 2010 12:44 am (UTC)
А что считаете?
fregimus
Apr. 10th, 2010 12:48 am (UTC)
Дурацкие NP-полные задачи, возникающие в машинном обучении. Не знаю пока, что считаю. Дальше видно будет.
evil_gryphon
Apr. 9th, 2010 11:13 pm (UTC)
Откройте страничку
http://fregimus.livejournal.com/94764.html
и сохраните её в разных форматах
форматах txt (только текст) - 8723 байт
фотография (изображение контроллера) - 65153 байт
htm (текст со средствами разметки и встроенным кодом - суповской рекламой и прочим мусором) - 47200 байт
mht (всё вместе одним файлом) - 658142 байта.

Это означает что более 90% передаваемой информации является мусором и если оптимизировать ЖЖ, убрать рекламу и всякое подобное ггг то нагрузку на сервер (и его подсистему памяти) можно уменьшить в 10 раз.
fregimus
Apr. 10th, 2010 12:17 am (UTC)
Думаю, что на сервере хранятся все-таки не странички одним чохом — скорее текст.
fat_crocodile
Apr. 10th, 2010 12:46 am (UTC)
И скорее всего -- пожатый.
Во всяком случае Contenet-encoding он отдаёт gzip.
fregimus
Apr. 10th, 2010 12:50 am (UTC)
ЖЖ ведь ведь из себя open source, можно загрузить и посмотреть, если так интересно… :-)
evil_gryphon
Apr. 10th, 2010 01:03 am (UTC)
да, это я забыл :( устал
ivanstor
Apr. 10th, 2010 08:01 am (UTC)
Ну, положим, современные ширпотреб диски обеспечивают линейную скорость чтения/записи не 40 Мб/сек, а более 100 Мб/сек. Это с физического диска на физический диск. Серверные ещё бодьше, раза в полтора.
Камень преткновения не столько скорость последовательного чтения/записи, сколько время доступа к произвольным данным, т.е. для винчестеров — время позиционирования головки. Именно из-за этого у них резко падает скорость операций с большим количеством мелких файлов, порой на 3 порядка.
А вообще Вы правы, SSD выглядят привлекательно, если бы стоили ещё поменьше...
fregimus
Apr. 10th, 2010 08:33 am (UTC)
Да, похоже, я отстал от жизни. Barracuda 7200.12 — 125 МБ/с sustained. Отчего ж виста такая медленная-то?
ole_vin
Apr. 18th, 2010 11:53 am (UTC)
Контроллер не делается узким местом, а становится узким местом. :)
( 21 comments — Leave a comment )