LINUX.ORG.RU

Производительность NVME SSD на линуксе

 


0

2

Купил на днях NVME SSD. Паспортная скорость 3500 мб/с запись 3000 мб/с чтение. В реальности даже до 2 гб/с не дотягивает.

# dd if=/dev/nvme0n1 of=/dev/null bs=1M status=progress
скопійовано 43414192128 байтів (43 GB, 40 GiB), 30 s, 1,4 GB/s^C
41904+0 записів прочитано
41903+0 записів записано
скопійовано 43938480128 байтів (44 GB, 41 GiB), 30,3677 s, 1,4 GB/s

В чем может быть подвох?

Модель SSD, материнской платы и процессора.

anonymous
()

Дело может быть в количестве задействованных каналов PCI и в номере версии шины PCI. Расскажи подробнее про железо.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)

Welcome to the real world. На заборе тоже пишут. В идеальных лабораторных условиях Вы может быть эти циферки и увидите.

bugfixer ★★★★★
()

Запусти два dd параллельно. Может один не может нагрузить как следует.

ox55ff ★★★★★
()

dd не подходит для тестирования диска.

fio --name=read --readonly --rw=read --ioengine=libaio --iodepth=16  --bs=1M --direct=0 --numjobs=16 --runtime=30 --group_reporting --filename=/dev/nvme0n1

или типа того.

NeOlip ★★
()
Последнее исправление: NeOlip (всего исправлений: 1)

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

Legioner ★★★★★
()
Ответ на: комментарий от Jameson

Дело может быть в количестве задействованных каналов PCI и в номере версии шины PCI

Как это узнать?

metaprog
() автор топика
Ответ на: комментарий от NeOlip

Спасибо!

# fio --name=read --readonly --rw=read --ioengine=libaio --iodepth=16  --bs=1M --direct=0 --numjobs=16 --runtime=30 --group_reporting --filename=/dev/nvme0n1
read: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=libaio, iodepth=16
...
fio-3.25
Starting 16 processes
Jobs: 16 (f=16): [R(16)][100.0%][r=6095MiB/s][r=6095 IOPS][eta 00m:00s]
read: (groupid=0, jobs=16): err= 0: pid=17905: Thu Sep 16 08:32:18 2021
  read: IOPS=1657, BW=1658MiB/s (1738MB/s)(48.6GiB/30013msec)
    slat (usec): min=226, max=68907, avg=3023.76, stdev=4204.64
    clat (usec): min=7, max=130782, avg=45621.89, stdev=16134.13
     lat (usec): min=554, max=141477, avg=48650.54, stdev=16862.60
    clat percentiles (msec):
     |  1.00th=[   12],  5.00th=[   17], 10.00th=[   25], 20.00th=[   32],
     | 30.00th=[   37], 40.00th=[   42], 50.00th=[   46], 60.00th=[   51],
     | 70.00th=[   56], 80.00th=[   61], 90.00th=[   66], 95.00th=[   70],
     | 99.00th=[   82], 99.50th=[   89], 99.90th=[  105], 99.95th=[  109],
     | 99.99th=[  117]
   bw (  MiB/s): min= 3924, max= 7608, per=100.00%, avg=5192.81, stdev=61.02, samples=288
   iops        : min= 3924, max= 7606, avg=5191.33, stdev=61.01, samples=288
  lat (usec)   : 10=0.01%, 20=0.02%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.02%, 10=0.42%, 20=6.20%, 50=52.28%
  lat (msec)   : 100=40.88%, 250=0.16%
  cpu          : usr=0.17%, sys=37.21%, ctx=864166, majf=0, minf=57081
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.3%, 16=99.5%, 32=0.0%, >=64=0.0%
     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.1%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=49748,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=16

Run status group 0 (all jobs):
   READ: bw=1658MiB/s (1738MB/s), 1658MiB/s-1658MiB/s (1738MB/s-1738MB/s), io=48.6GiB (52.2GB), run=30013-30013msec

Disk stats (read/write):
  nvme0n1: ios=34677/0, merge=0/0, ticks=15156/0, in_queue=15157, util=30.33%

По-прежнему недотягивает до 3500. При этом ЦПУ грузит на все 100%! Может ли процессор быть «бутылочным горлышком»?

metaprog
() автор топика
Последнее исправление: metaprog (всего исправлений: 3)
Ответ на: комментарий от Legioner

Скопируй сто мегабайтов и замерь скорость.

# dd if=/dev/nvme0n1 of=/dev/null bs=100M status=progress count=1
1+0 записів прочитано
1+0 записів записано
скопійовано 104857600 байтів (105 MB, 100 MiB), 0,0910141 s, 1,2 GB/s
metaprog
() автор топика
Ответ на: комментарий от metaprog

По-прежнему недотягивает до 3500. При этом ЦПУ грузит на все 100%! Может ли процессор быть «бутылочным горлышком»?

Попробуй с –direct=1 вместо 0, это отключит буфферизацию.

NeOlip ★★
()
Ответ на: комментарий от anonymous

Вряд ли. Весь смысл паспортных данных в прыжке в том, чтобы замерять кеши.

Я тут недавно свой SSD обнулял. Реальная скорость записи около 40 MB/s. HDD быстрей вертятся.

Legioner ★★★★★
()
Ответ на: комментарий от metaprog

Как это узнать?

Сообщить то, что просили в первом комментарии.

anonymous
()

Скорее всего работает в PCIe x2 режиме.

pekmop1024 ★★★★★
()
Ответ на: комментарий от Legioner

Я тут недавно свой SSD обнулял

blkdiscard же есть, не?

Реальная скорость записи около 40 MB/s

dd if=/dev/zero of=/dev/diskname?

Нюню. iostat ты конечно же не посмотрел?

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

blkdiscard же есть, не?

Не знаю, что это. Судя по ману это не удаляет данные с диска.

dd if=/dev/zero of=/dev/diskname?

Да, примерно так. Только /dev/mapper/luks-xxx. Я для безопасности это делал, чтобы диск заполнить случайными данными.

Нюню. iostat ты конечно же не посмотрел?

Хз, о чём ты.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)

Ты читаешь в один поток.

Запусти их 10-65535 и увидишь скорость по паспорту.

anonymous
()
Ответ на: комментарий от Legioner

Не знаю, что это. Судя по ману это не удаляет данные с диска.

Позорно пятизвездочному такое писать в контексте ssd.

zemidius
()
Ответ на: комментарий от Legioner

Ну ssd уже более 10 лет в народе. Не знать о том, что если ssd не trim’ать, то у него сильно падает производительность в 2021 году - ну, мягко говоря, такоэ…

zemidius
()
Ответ на: комментарий от zemidius

Хорошо, тогда что стыдного в том, чтобы не знать о blkdiscard? Крайне редко нужная утилита, особенно учитывая, что mkfs и утилиты LVM делают DISCARD по умолчанию. Я, наверное, ей пользовался меньше раз, чем у меня сейчас есть SSD.

anonymous
()
Ответ на: комментарий от anonymous

mkfs

Да, давно

LVM

Гораздо менее давно, раньше issue_discards = 0 был по-умолчанию.

А ещё надо discard в crypttab прописывать. Там он до сих пор выключен AFAIK by default.

zemidius
()
Последнее исправление: zemidius (всего исправлений: 1)
Ответ на: комментарий от Legioner

Ваш юзерпик как нельзя лучше коррелирует с вашей дремучестью. Не меняйте ни в коем случае.

pinus_nigra
()
Ответ на: комментарий от zemidius

Производительность падает, если его нормально использовать. Если его заливать от начала до конца данными, то будет его реальная производительность. discard мне в любом случае не годится, я не доверяю ему, я хочу мусором записать от начала до конца. А trim я делаю на работающей системе, не переживай.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Производительность падает, если его нормально использовать

Ты сильно путаешь «падает производительность от забития кэша» и «нет trim, возникает write apmlification и прочие нехорошие штуки»

discard мне в любом случае не годится, я не доверяю ему

А, ну-ну, вперед с такими познаниями в будущее ))

я хочу мусором записать от начала до конца

Запись мусором - совсем не discard.

zemidius
()
Ответ на: комментарий от zemidius

Не пойму, что ты мне хочешь сказать или доказать. Сформулируй мысль. Я про SSD всё знаю лучше тебя и хорошо понимаю, что делаю и зачем. А у тебя какие-то бессвязные факты в голове.

Legioner ★★★★★
()

Паспортная скорость - это скорость интерфейса. Не имеющая ничего общего с реальной скоростью. Достигается в пиковых моментах когда все что льется на диск или с диска лежит в кэше. 43гб явно больше чем кэш.

Qui-Gon ★★★★★
()
Ответ на: комментарий от anonymous

Ну запись на SMR довольно быстрая. Особенно, самая первая.

i-rinat ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Похоже, ТС по принципиально не хочет предоставлять сведения, без которых на его вопрос нельзя нормально ответить. Странный товарищ 🤷🏻

anonymous
()
Ответ на: комментарий от i-rinat

Добро пожаловать в волшебный мир QLC SSD

Добро пожаловать в мир линуксового ядра, где запись идет в кэш, сброс кэша идет через блочный стек с очередью (какой глубины?) и I/O шедулером (каким, кстати - и какой там write_expire если он есть?) и поюзаный изрядно заплешивевший под криворукой эксплуатацией (fstrim, blkdiscard? - не, не слышал) SSD начинает упираться в необходимость делать уплотнение получившейся перезаписи.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

Добро пожаловать в мир линуксового ядра, где запись идет в кэш, сброс кэша идет через блочный стек с очередью (какой глубины?) и I/O шедулером (каким, кстати - и какой там write_expire если он есть?)

Добро пожаловать в мир потешных недашиных представлений о ядре Linux.

anonymous
()
Ответ на: комментарий от i-rinat

Добро пожаловать в волшебный мир QLC SSD, где SSD на линейной записи проигрывают жёстким дискам!

Можно также взять китайский безбуферный dramless днищеssd с самой плохой tlc, чтобы легко достигнуть такого же результата ) «Зато дешево!» (с)

zemidius
()
Ответ на: комментарий от zemidius

По идее, накопители с NVMe 1.2 могут запросить у хоста немного ОЗУ под свои нужды. Но я не знаю, есть ли сейчас такие устройства на рынке.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Фич-реквест: нужны быстрые ответы на ЛОРе одним кликом =D

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.