Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 4 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 25.08.2025
Имеется USB-диск HDD Seagate Expansion 5Тб [ST5000LM000]
ST5000LM000-2AN170
Вложение:
Комментарий к файлу: CrystalDiskInfo: ST5000LM000-2AN170
ST5000LM000.png
ST5000LM000.png [ 13.65 КБ | Просмотров: 1824 ]

Решил протестировать скорость операций с файлами на SMR диске в зависимости от типа файловой системы и размера кластера.
SMR-диски плохи тем, что операции со множеством мелких файлов быстро заполняют кэш, и диск перестаёт принимать новые команды, пока не разложит содержимое кэша по лентам.
По этой причине синтетические тесты утилитами типа AS SSD Benchmark, CrystalDiskMark дают нестабильный результат.
ST5000LM000-2AN170
Вложение:
Комментарий к файлу: ATTODiskBenchmark: ST5000LM000-2AN170
ATTO Disk Bench NTFS 4K.jpg
ATTO Disk Bench NTFS 4K.jpg [ 76.92 КБ | Просмотров: 1824 ]
Вложение:
Комментарий к файлу: CrystalDiskMark: ST5000LM000-2AN170
CrystalDiskMark NTFS 4K.png
CrystalDiskMark NTFS 4K.png [ 27.56 КБ | Просмотров: 1824 ]

Поэтому пришлось писать свои скрипты: копирование (XCOPY), поиск текста в файлах (Select-String), изменение атрибутов файлов (ATTRIB), удаление файлов (Remove-Item).
Для тестирования использовались следующие наборы данных:
1) 2500 файлов размером от 0 до 4 Кб общим объёмом 2,9 Мб.
2) 5000 файлов размером от 0 до 256 Кб общим объёмом 190,5 Мб;
3) 500 файлов размером от 256 Кб до 4 Мб общим объёмом 362,2 Мб;
4) Файл размером 2,5 Гб;

Тестирование проводилось в файловых системах NTFS и exFAT от 4К до 256K в ОС Windows 11 22H2.
Копирование
Код:
@echo off
chcp 1251 >nul
SET /P Name="Введите имя файла: "
:: Путь к приложению, запускаемому из консоли
set program="XCOPY /-I C:\TEST\test.f J:\test.f"
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { %program% } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Copy 2,5G: %elapsed%>>"%Name%.txt"
echo Copy 2,5G: %elapsed% секунд
TIMEOUT 10
set program="XCOPY /S /I /Q C:\TEST\test3 J:\test3"
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { %program% } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Copy 4M:  %elapsed%>>"%Name%.txt"
echo Copy 4M:  %elapsed% секунд
TIMEOUT 10
set program="XCOPY /S /I /Q C:\TEST\test2 J:\test2"
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { %program% } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Copy 256K: %elapsed%>>"%Name%.txt"
echo Copy 256K: %elapsed% секунд
TIMEOUT 10
set program="XCOPY /S /I /Q C:\TEST\test J:\test"
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { %program% } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Copy 4K:   %elapsed%>>"%Name%.txt"
echo.>>"%Name%.txt"
echo Copy 4K:   %elapsed% секунд
:: Звуковой сигнал
echo 0y | choice /c y /n>nul
@pause
Поиск текста
Код:
@echo off
chcp 1251 >nul
SET /P Name="Введите имя файла: "
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Select-String -Path J:\test.f -Pattern "ABRACADABRA" } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Find 2,5G: %elapsed%>>"%Name%.txt"
echo Find 2,5G: %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Select-String -Path J:\test3\* -Pattern "ABRACADABRA" } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Find 4M:  %elapsed%>>"%Name%.txt"
echo Find 4M:  %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Select-String -Path J:\test2\* -Pattern "ABRACADABRA" } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Find 256K: %elapsed%>>"%Name%.txt"
echo Find 256K: %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Select-String -Path J:\test\* -Pattern "ABRACADABRA" } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Find 4K:   %elapsed%>>"%Name%.txt"
echo.>>"%Name%.txt"
echo Find 4K:   %elapsed% секунд
:: Звуковой сигнал
echo 0y | choice /c y /n>nul
@pause
Изменение атрибутов
Код:
@echo off
chcp 1251 >nul
SET /P Name="Введите имя файла: "
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { ATTRIB +R J:\test.f } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Attr 2,5G: %elapsed%>>"%Name%.txt"
echo Attr 2,5G: %elapsed% секунд
TIMEOUT 1
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { ATTRIB +R J:\test3\* } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Attr 4M:  %elapsed%>>"%Name%.txt"
echo Attr 4M:  %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { ATTRIB +R J:\test2\* } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Attr 256K: %elapsed%>>"%Name%.txt"
echo Attr 256K: %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { ATTRIB +R J:\test\* } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Attr 4K:   %elapsed%>>"%Name%.txt"
echo.>>"%Name%.txt"
echo Attr 4K:   %elapsed% секунд
:: Звуковой сигнал
echo 0y | choice /c y /n>nul
@pause
Удаление
Код:
@echo off
chcp 1251 >nul
SET /P Name="Введите имя файла: "
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Remove-Item J:\test.f -Force } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Del  10G: %elapsed%>>"%Name%.txt"
echo Del  10G: %elapsed% секунд
TIMEOUT 1
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Remove-Item J:\test3 -Recurse -Force } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Del  4M:  %elapsed%>>"%Name%.txt"
echo Del  4M:  %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Remove-Item J:\test2 -Recurse -Force } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Del  256K: %elapsed%>>"%Name%.txt"
echo Del  256K: %elapsed% секунд
TIMEOUT 10
for /f "tokens=*" %%A in ('powershell -Command "Measure-Command { Remove-Item J:\test -Recurse -Force } | Select-Object -ExpandProperty TotalSeconds"') do set "elapsed=%%A"
echo Del  4K:   %elapsed%>>"%Name%.txt"
echo Del  4K:   %elapsed% секунд
:: Звуковой сигнал
echo 0y | choice /c y /n>nul
@pause
Копирование данных на жёсткие диски проводилось с SSD Samsung 970 EVO Plus. Между операциями над разными группами файлов - пауза в 10 сек, чтобы дать диску "прийти в себя". После отработки каждого скрипта - перезагрузка компьютера с переподключением USB-диска.

Для сравнения провел тесты на стареньком диске WDC WD20EARX-00PASB0 серии Caviar Green (предположительно ~5000-5600 об/мин) с файловой системой NTFS и размером кластера 4K.
WDC WD20EARX-00PASB0
Вложение:
Комментарий к файлу: CrystalDiskInfo: WDC WD20EARX-00PASB0
WDC WD20EARX-00PASB0.png
WDC WD20EARX-00PASB0.png [ 11.44 КБ | Просмотров: 1824 ]
Вложение:
Комментарий к файлу: ATTODiskBenchmark: WDC WD20EARX-00PASB0
ATTO Disk Bench.jpg
ATTO Disk Bench.jpg [ 79 КБ | Просмотров: 1824 ]


Последний раз редактировалось jame 23.11.2025 11:43, всего редактировалось 2 раз(а).


Партнер
 

Junior
Статус: Не в сети
Регистрация: 25.08.2025
Результаты тестов. Время выполнения указано в секундах.
Операции с файлом размером 2,5 Гб
Вложение:
Комментарий к файлу: Операции с файлом размером 2,5 Гб
2,5G.png
2,5G.png [ 172.49 КБ | Просмотров: 1761 ]
Операции с файлами размером от 256 Кб до 4 Мб (всего 362,2 Мб)
Вложение:
Комментарий к файлу: Операции с файлами размером от 256 Кб до 4 Мб
4MB.png
4MB.png [ 173.4 КБ | Просмотров: 1761 ]
Операции с файлами размером от 0 до 256 Кб (всего 190,5 Мб)
Вложение:
Комментарий к файлу: Операции с файлами размером от 0 до 256 Кб
256K.png
256K.png [ 173.05 КБ | Просмотров: 1761 ]
Операции с файлами размером от 0 до 4 Кб (всего 2,9 Мб)
Вложение:
Комментарий к файлу: Операции с файлами размером от 0 до 4 Кб
4K.png
4K.png [ 172.78 КБ | Просмотров: 1761 ]

Как видно из графиков, скорость дисковых операций на диске с технологией черепичной записи (Shingled Magnetic Recording, SMR) в файловой системе exFAT сильно зависит от размера кластера: чем больше кластер, тем меньше времени затрачивается на операцию.
Для NTFS каких-то существенных отличий не выявлено. Но при больших размерах кластеров в NTFS после дисковых операций Windows длительное время не даёт безопасно извлечь диск.
Почему SMR-диск с трудом работает с маленькими файлами - загадка :?: учитывая, что все 2500 файлов размером от 0 до 4 Кб общим объёмом 2,9 Мб поместятся в кэш диска.
Но стоит отметить, что тесты проводились на пустом диске после форматирования. При частичном заполнении диска результаты могут кардинально отличаться с учётом степени фрагментации данных.
Также видно, что старый добрый CMR-диск (или PMR?) в большинстве сценариев показывает лучшие результаты, чем более новый SMR. А в случае с маленькими файлами - лучше на 1-2 порядка.

Из личного опыта скажу, что ST5000LM000 не подходит для скачивания торрентов, содержащих много файлов: при сбросе на диск последний может "задуматься" на десятки минут.


 

Junior
Статус: Не в сети
Регистрация: 25.08.2025
Выяснилось, что сравнение USB-диска с внутренним было некорректным: по умолчанию в Windows 11 у внутреннего диска включено кэширование, а у внешнего - отключено. И при записи на диск с включенным кэшированием программа рапортует о выполнении (отмечено стрелочкой) ещё до того, как данные фактически будут записаны на диск.
Кэширование записи на диск
Вложение:
изображение_2025-11-24_224212.png
изображение_2025-11-24_224212.png [ 20.2 КБ | Просмотров: 870 ]
Вложение:
изображение_2025-11-24_224124.png
изображение_2025-11-24_224124.png [ 19.18 КБ | Просмотров: 870 ]


Последний раз редактировалось jame 25.11.2025 14:04, всего редактировалось 1 раз.

 

Moderator
Статус: Не в сети
Регистрация: 13.01.2017
Откуда: Московская обл.
Кэширование для внешнего диска чревато потерей данных - например, если пользователю приспичит срочно убежать, забрав диск, не сделав безопасное извлечение или недождавшись пока оно отработает.

_________________
MSI Z890 Carbon | Intel U9 285K | 2x24GB DDR5-9333 | Sapphire Nitro 7900 XTX
Asus X870E Extreme | AMD 7950x3d | 2x48GB DDR5-6200 | Zotac AMP RTX 5070Ti


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 4 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan