Статья Гоца Грейфа, пересказ которой предлагается вашему вниманию, формально посвящена очередному пересмотру «правила пяти минут» Джима Грея и Джанфранко Пуцолу. Этому автор посвятил большую часть своей статьи. Но мне кажется, что гораздо более важно то, что в статье предлагаются и обосновываются вполне конкретные подходы по применению флэш-памяти в файловых системах и СУБД. Похоже, что подобные подходы могут сильно подействовать на будущее технологии баз данных (например, привести к отказу от систем баз данных, поддерживаемых в основной памяти). Кроме того, очень ценно то, что Грейф приводит список нерешенных проблем, связанных с использованием флэш-памяти. Эти проблемы действительно актуальны и интересны. Хотелось бы надеяться, что за их решение возьмется кто-нибудь из российских специалистов. Как обычно, обращаю ваше внимание, что для удобства читателей я снабдил большинство материалов из списка литературы ссылками на источники, свободно доступные в Internet.
Сергей Кузнецов
В 1987 г. Джим Грей (Jim Gray) и Джанфранко Пуцолу (Gianfranco Putzolu) опубликовали свое знаменитое правило для разумного соотношения объема основной памяти и темпа ввода-вывода []. В своих подсчетах они сравнивали стоимость постоянного сохранения записи (или страницы) в основной памяти со стоимостью выполнения обмена с диском при каждом обращении к этой записи (или странице), используя существовавшее тогда соотношение цен на схемы основной памяти и дисковые устройства. Название правила происходит от интервала времени между равнозатратными обращениями к записи (или странице). Если обращения к записи (или странице) происходят более часто, то ее следует сохранять в основной памяти; если реже – ее нужно хранить на диске и считывать при необходимости.
Основываясь на тогдашних ценах и характеристиках производительности оборудования компании Tandem, Грей и Пуцолу обнаружили, что стоимость основной памяти, достаточной для хранения записи размером в 1 килобайт, примерно совпадает с (частью) стоимости дискового устройства, обеспечивающего доступ к такой записи через каждые 400 секунд, которые они округлили до пяти минут.
Интервал равнозатратности обратно пропорционален размеру записи. По Грею и Пуцолу он равен одному часу для записи размером 100 байт и двум минутам для страниц в 4 килобайта.
Десять лет спустя правило пяти минут было проанализировано заново []. К этому времени изменилось множество цен и параметров производительности (например, стоимость мегабайта основной памяти упала с 5000 до 15 долларов). Тем не менее, правило пяти минут сохранилось. Интервал равнозатратности, равный примерно пяти минутам, существовал теперь для страниц размером в 8 килобайт. Первой целью этой статьи является анализ правила пяти минут спустя еще десять лет.
Конечно, в обеих предыдущих статьях признавалось, что в любой момент времени цены и производительность сильно зависят от технологий и конкретных устройств (например, основная память для мейнфреймов стоила совсем не столько же, сколько память для миникомпьютеров, диски SCSI обладают совсем другой ценой и производительностью, чем диски IDE, и т.д.). Поэтому заинтересованным читателям стоит самим пересчитать соответствующие формулы для своей среды и оборудования. Цифры, использованные в данной статье (см. табл. 1), типичны для технологии 2007 г.
| Основная память | Флэш-диск | SATA-диск | |
| Цена и емкость | $3 за 8x64 мегабит | $999 за 32 гигабайта | $80 за 250 гигабайт |
| Пропускная способность передачи данных (Transfer bandwidth) | ---- | 66 Мбайт/сек API | 300 Мбайт/сек API |
| Время ожидания доступа (Access latency) | ---- | 0.1 мсек | 12 мсек в среднем |
| Потребляемая мощность в активном состоянии (Active power) | ---- | 1 Вт | 10 Вт |
| Потребляемая мощность в состоянии простоя (Idle power) | ---- | 0.1 Вт | 8 Вт |
| Потребляемая мощность в режиме пониженного энергопотребления (Sleep power) | ---- | 0.1 Вт | 1 Вт |
| NAND-флэш-память | Диск SATA | |
| Цена и емкость | $999 за 32 гигабайта | $80 за 250 гигабайт |
| Цена за гигабайт | $31.20 | $0.32 |
| Время чтения страницы в 4 килобайта | 0.16 мсек | 12.01 мсек |
| Число считываний 4-килобайтных страниц в секунду | 6200 | 83 |
| Стоимость в расчете на считывание одной 4-килобайтной страницы в секунду | $0.16 | $0.96 |
| Время чтения страницы в 256 килобайт | 3.98 мсек | 12.85 мсек |
| Число считываний 256-килобайтных страниц в секунду | 250 | 78 |
| Стоимость в расчете на считывание одной 256-килобайтной страницы в секунду | $3.99 | $1.03 |