LINUX.ORG.RU

Странности с nvme Transcend TS2TMTE220S

 


1

2

Есть nvme m.2 Transcend TS2TMTE220S на 2 Тб
Проблема: одна из партиций дико медленно читается (10-150 МБ/с).
В системе есть еще 2 nvme того же производителя (другая модель), но с ними проблем нет.

О диске


=== START OF INFORMATION SECTION ===
Model Number:                       TS2TMTE220S
Serial Number:                      I420220454
Firmware Version:                   82B2W2AA
PCI Vendor/Subsystem ID:            0x1d79
IEEE OUI Identifier:                0x48357c
Controller ID:                      0
NVMe Version:                       1.4
Number of Namespaces:               1
Namespace 1 Size/Capacity:          2,048,408,248,320 [2.04 TB]
Namespace 1 Utilization:            993,409,298,432 [993 GB]
Namespace 1 Formatted LBA Size:     512

...
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02, NSID 0x1)
Critical Warning:                   0x00
Temperature:                        32 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    15,678,105 [8.02 TB]
Data Units Written:                 2,258,285 [1.15 TB]
Host Read Commands:                 283,812,067
Host Write Commands:                5,052,088
Controller Busy Time:               23,508
Power Cycles:                       18
Power On Hours:                     12,454
Unsafe Shutdowns:                   3
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               45 Celsius
Temperature Sensor 2:               31 Celsius
Temperature Sensor 3:               32 Celsius

Error Information (NVMe Log 0x01, 16 of 256 entries)
No Errors Logged

Self-test Log (NVMe Log 0x06, NSID 0xffffffff)
Self-test status: No self-test in progress
No Self-tests Logged

Диск разбит на 4 партиции

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048           32767   15.0 MiB    0C01  Microsoft reserved
   2           32768          851967   400.0 MiB   EF00  EFI system partition
   3          851968        67960831   32.0 GiB    8300  Linux filesystem
   4        67960832      4000797326   1.8 TiB     8E00  Linux LVM
Первые 3 читаются с нормальной скоростью ~2GB/s, а на 4-й скорость падает до 10МБ/с и не поднимается выше 150 МБ/с.

Диск не перегревается, т.к. есть радиатор и вентиляция.

Диск не переполнен (занаято ~50%).

Что с этим делать? Попробовать обновить прошивку? Сделать trim разделу?

★★★★★

Попробовать на других материнках/usb-карманах, чтобы убедиться, что дело точно в NVMe, а не в каких-то конфлитах в этой материнке.

mky ★★★★★
()

не поднимается выше 150 МБ/с.

А LVM сам по себе/только на nvme устройствах?
выглядит как sync-speed к наименьшому, софтовый. cpu/io-wait?

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

lvm в данном случае это средство разбиения и миграции.
Это десктоп. С диском в данный момент никто не работает.

На данном диске 1 LV. Не рейд. Да и дело не в lvm.

dd if=/dev/nvme2n1p4 bs=1M of=/dev/zero status=progress показывает до 10 до 150 МБ/с

Перед dd выполняется «echo 3 >/proc/sys/vm/drop_caches»

Остальный партиции показывают примерно 2ГБ/с.

iostat показывает 0.

vel ★★★★★
() автор топика

одна из партиций дико медленно читается (10-150 МБ/с)

Заряд утекает (привет qlc), ячейки плохо читаются, работает коррекция ошибок чтения.

Просто перезапиши плохо читающиеся данные, перенесутся/запишутся в другие ячейки с полным зарядом.

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

ну и M-key, значит sata||nvme. у меня в ноуте например есть возможность выбора режима работы для м2 - ahci/nvme/raid. иногда бывало что по тем или иным причинам сбрасывалось в ahci, что тоже отражалось на скорости(у меня 970 evo).
но у вас, как вы пишите, с остальными разделами всё ок, кроме lvm.

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

Можно легко проверить — записать на этот раздел новый файл и прочитать его (сбросив кэши, конечно).

greenman ★★★★★
()

Есть в хозяйстве Patriot P210 2Tb SATA. Примерно через пол года использования (только читаю с него) начинает падать скорость до 15-20 Мб/с. Сношу данные, записываю заново и опять на пол года. Последний раз поставил туда BTRFS и делаю scrub раз в пару месяцев, как начинает падать скорость, перезаписываю данные. Такой чемодан без ручки, и выкинуть жалко и использовать тяжело. В гарантию его не отправить, SMART нормальный.

voidkl
()
Ответ на: комментарий от anonymous
dd if=/dev/nvme2n1p4 bs=1M of=/dev/zero status=progress

показывает до 10 до 150 МБ/с. При чем тут lvm?

Пока план такой: дождаться завершения бекапа, попробовать обновить прошивку, попробовать перезаписать файлы и если не поможет, то сделать secure erase диску.

vel ★★★★★
() автор топика

Да, перезапись файлов помогает.

Придется раз в полгода (?) делать рефреш :(

Сделал простенькую утильку которая через mmap/msync/munmap обновляет файлы.

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

Пока план такой: дождаться завершения бекапа, попробовать обновить прошивку, попробовать перезаписать файлы и если не поможет, то сделать secure erase диску.

Может иметь смысл полностью очистить nvme namespace с новой прошивкой и писать всё начисто, если на старой была лажа в FTL и в новой каким-то чудом исправлена. А может и не иметь.

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

А при этом mmap/msync/munmap все блоки с метаданными ФС или LVM перепишутся? Не будет блока, который только читается и через год-другой потеряет инфу?

ИМХО, нужно измерять скорость чтения блока (на уровне NVMe устройства, а не ФС) и переписывать «медленные». Скорость чтения у нормального/полузабытого блока на порядок отличается, можно точно определить какие переписывать...

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

Если блок читается медленнее 300 МБ/с, тогда обновляю.

Ну и в конце восстанавливаю ctime/atime файла.

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

Проблема в том, что утилиту производителя (которая только для оффтопика) не запустить под winpe (стрелец) из-за отсутствия dotnet определенной версии (v4.0.30319).

Портабельной версии этой утилиты (transcend ssd scope) почему-то нет. То дерьмо, что лежит на сайте производителя сначала инсталируется.

Проблема в том, что для того чтобы достать этот nvme нужно почти полностью разобрать комп, а потом найти комп в оффтопиком в котоый мойжно добавить nvme. У меня есть комп с вендой, но там 1 слот для nvme и в нем стоит диск с вендой :(

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

dd if=/dev/nvme2n1p4 bs=1M of=/dev/zero status=progress

Это ты тестируешь чтение 4k с readahead 64kb, я правильо понимаю? Потому что не помешало бы еще и iflag=direct сделать, так то, да и of тут принято делать /dev/null

no-dashi-v2 ★★★★
()
Ответ на: комментарий от vel

Сделал простенькую утильку которая через mmap/msync/munmap обновляет файлы.

Не обнародуешь?

greenman ★★★★★
()
Ответ на: комментарий от no-dashi-v2

readahead 64kb

Почему 64 кБайт?

iflag=direct

Это как-то кардинально повлияет? Пока ядро передаёт 1 Мбайт блок в userspace и получает его обратно для /dev/zero, оно ещё почитает с /dev/nvme2n1p4, но успеет мало прочитать относительно размера bs. Если бы измерялась скорость чтения 4 кБайт блока, то да, но там вобще не понятно, как точно измерять, там уже кеши в NVMe могут влиять.

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

Пока ядро передаёт 1 Мбайт блок в userspace и получает его обратно для /dev/zero, оно ещё почитает с /dev/nvme2n1p4

Знаешь, запусти наверное iostat и сам увидишь. С директом и без. Нет желания спорить

no-dashi-v2 ★★★★
()
Ответ на: комментарий от no-dashi-v2

iostat

iostat с какими параметрами запускать? dd status=progress не устраивает?

Так вот я dd запустил, если как у ТС, то 2.6 MB/s, а если с iflag=direct, то 1.9 MB/s. А для свежего раздела этого NVMe dd выдаёт 1.4 GB/s, что с direct, что без.

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

А для свежего раздела

На «свежем разделе» у тебя не записано данных, поэтому FTL при чтении говорит «там нет данных» и ничего не читает.

если как у ТС, то 2.6 MB/s, а если с iflag=direct, то 1.9 MB/s

Вопрос который стоит миллиона вопросов - ты блин что измеряешь? Производительности диска или производительность кэша с фолбэком к диску если кэш не заполнен?

С директом ты измеряешь производительность диска.

Без него - производительность кэша.

если как у ТС, то 2.6 MB/s, а если с iflag=direct, то 1.9 MB/s

Ты еще и bs позабыл.

Изморители дисков, блин

no-dashi-v2 ★★★★
()
Ответ на: комментарий от mky

iostat с какими параметрами запускать? dd status=progress не устраивает?

Есть такое слово latency (оно же servicetime часто) и есть bandwidth (которое часто именуют «скоростью»). man iostat на предмет ключа -x

no-dashi-v2 ★★★★
()
Последнее исправление: no-dashi-v2 (всего исправлений: 1)
Ответ на: комментарий от no-dashi-v2

Ты еще и bs позабыл.

Хватит постить свои фантазии. Вы так и не удосужились объяснить откуда вы взяли readahead 64kb. Я запускал ровно ту строку, что привёл ТС, с bs=1M, только для другого раздела, так как у меня другой NVMe.

Производительности диска или производительность кэша с фолбэком к диску если кэш не заполнен?

Да без разницы особо, что измерять, если кеш сброшен. Здесь нет цели точно измерить, здесь увидеть разницу между свежим и полузабытым состоянием многоуровневой NAND-памяти.

mky ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария