Плохое чтение SSD-данных на Linux

Недавно у меня был SSD-накопитель на базе Intel 320 , и у меня возникли трудности с рекламой 38K IOPS для случайных чтений 4K.

Как с fio и с моей собственной программой взлома, я вижу около 6K IOPS. Это почти так же, как размер глубины ввода-вывода не имеет значения, и ядро ​​пытается получить один блок за раз.

Пример:

 $ cat job [randread] filename=/dev/sdb2 rw=randread size=128m blocksize=4k ioengine=libaio iodepth=64 direct=1 $ sudo fio job randread: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64 Starting 1 process Jobs: 1 (f=1): [r] [100.0% done] [25423K/0K /s] [6207/0 iops] [eta 00m:00s] randread: (groupid=0, jobs=1): err= 0: pid=4678 read : io=131072KB, bw=24852KB/s, iops=6213, runt= 5274msec slat (usec): min=1, max=94, avg= 5.00, stdev= 2.88 clat (usec): min=312, max=13070, avg=10290.25, stdev=1399.78 bw (KB/s) : min=23192, max=24464, per=97.08%, avg=24125.60, stdev=383.70 cpu : usr=15.74%, sys=22.57%, ctx=31642, majf=0, minf=88 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=99.8% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued r/w: total=32768/0, short=0/0 lat (usec): 500=0.01%, 750=0.01%, 1000=0.03% lat (msec): 2=0.05%, 4=0.10%, 10=20.10%, 20=79.70% Run status group 0 (all jobs): READ: io=131072KB, aggrb=24852KB/s, minb=25448KB/s, maxb=25448KB/s, mint=5274msec, maxt=5274msec Disk stats (read/write): sdb: ios=30453/0, merge=850/0, ticks=319060/0, in_queue=319060, util=98.09% 

Система Linux 2.6.35-31-generic #63-Ubuntu SMP Mon Nov 28 19:29:10 UTC 2011 x86_64 GNU/Linux . /dev/sdb2 выше – это раздел размером 10 ГБ на SSD на 80 ГБ. fio – версия 1.38.

По-настоящему оценил бы мысли о том, что может быть неправильно.

PS: раздел в вышеупомянутом тесте (/ dev / sdb2) выровнен по границе 4K. Чтение большего размера (размер = 10 г) не помогает.

2 Solutions collect form web for “Плохое чтение SSD-данных на Linux”

Правильно ли совпадают ваши разделы? Если вы не начинаете свой раздел на границе 4k, ни одно из ваших 4k-считываний не будет выстраиваться в линию, создавая пограничные переходы и, в худшем случае, удваивает ваш ввод-вывод.

См. Обсуждение. Могу ли я настроить свою систему Linux для более агрессивного кэширования файловой системы?

Короче говоря, вам, вероятно, придется настроить некоторые настройки очереди устройств. Я предполагаю, что планировщик или настройка очереди неправильно догадались ядром или вручную.

Пытаться

 head /sys/block/sd*/{queue/{nr_requests,nomerges,rotational,scheduler},device/queue_depth} 

для отладки проблемы. Вы должны иметь queue_depth и nr_requests установленные рядом с 31, если вы можете терпеть латентность для одного чтения, вызванного NCQ, nomerges должны быть равны нулю, а rotational должно быть равным нулю для SSD. Выбор правильного scheduler будет сложнее, но для raw IOPS noop должен быть достаточно хорошим. Я считаю, что правильно настроенный cfq справляется с требованиями реального мира.

И убедитесь, что диск подключен к SATA + AHCI, и вы включили NCQ. В противном случае у вас мало надежды на то, чтобы вытащить все с вашего диска.

  • Могу ли я доказать, что SSD сломан?
  • Linux (3.4) Использование раздела подкачки SSD вызывает экстремальную задержку - как устранить?
  • Arch / OSX - параметры fstab для общего / домашнего (HFS +) на SSD
  • Назовите эту функцию - автоматически перемещать блок с типа диска на другой?
  • fstrim и iostat
  • Как проверить оставшуюся жизнь на SSD или уровне износа среды?
  • btrfs и опция удаления диска на ssd
  • Использовать второй жесткий диск, предоставляемый хостом
  • Как настроить KVM-разделы?
  • Определение загрузчика Arch Linux на Chromebook?
  • Где я могу включить опцию сброса?
  • Interesting Posts

    Импортировать SQL-файлы с помощью xargs

    Установка Audacity – проблемы с пакетом

    Как удалить узлы из файла HUGE (> 2gb)?

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

    VirtualBox дает мне только 32-битный вариант для системной установки, но у меня 64-битный процессор

    Как скопировать / вставить Gnome-Terminal

    Какова цель опции -class в меню личинок?

    Разрешения для Linux меняются автоматически

    Запретить File IO для процесса, за исключением FIFO

    UTF 8 имен файлов?

    Как создать журнал или отправить журнал электронной почты при запуске указанного процесса

    / usr / sbin / sendmail: разрешение отклонено

    В командной строке я могу перенаправить вывод в файл WITHOUT>, >> или | операторы?

    Используйте rsync для зеркалирования источника для развертывания веб-сайта, но не для удаления выбранных файлов в месте назначения

    Как запустить несколько программ в фоновом режиме с помощью одной команды?

    Linux и Unix - лучшая ОС в мире.