Библиотека сайта rus-linux.net
Тестируем скорость чтения/записи для устройств usb и ssd с помощью команды dd в Linux
Оригинал: Test read/write speed of usb and ssd drives with dd command on LinuxАвтор: Silver Moon
Дата публикации: Jul 12, 2014
Перевод: Н.Ромоданов
Дата перевода: октябрь 2014 г.
Скорость работы устройства
Скорость работы устройства измеряется в единицах, указывающих сколько данных оно может читать или писать в единицу времени. Команда dd является простым инструментом командной строки, который можно использовать для чтения и записи произвольных блоков данных на диске и измерять скорость, с которой произошла передача данных.
В этой статье мы будем использовать команду dd для проверки скорости чтения и записи устройств usb и ssd.
Скорость передачи данных зависит не только от диска, но и от интерфейса, через который он подключен. Например порт usb 2.0 имеет максимальное функциональное ограничение по скорости в 35 Мбайт/с, так что даже если вы подключили к порту usb 2 высокоскоростной флэш-накопитель usb 3, скорость будет ограничена меньшим значением.
То же самое относится и к устройству SSD. Устройство SSD подключается через порты SATA, которые имеют разные версии. Sata 2.0 имеет максимальный теоретический предел скорость в 3Гбит/с, что равно примерно 375 Мбайт/с. В то время как SATA 3.0 поддерживает вдвое большую скорость.
Метод тестирования
Смонтируйте диск и перейдите в него из терминального окна. Затем используйте команду dd сначала записи файла, состоящего из блоков фиксированного размера. Затем прочитайте тот же файл с использованием такого же самого размера блоков.
Общий синтаксис команды dd выглядит следующим образом
dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks
При записи на диске, мы просто выполняем чтение из устройства /dev/zero, которое является источником бесконечного числа байтов. Когда происходит чтении с диска, мы читаем записанный ранее файл и отправляем его в устройство /dev/null, которого на самом деле нет. В течение всего процесса команда dd отслеживает скорость, с которой происходит передача, и сообщает о ней.
Устройство SSD
Устройство SSD, которое мы используем, является диском "Samsung Evo 120GB" SSD. Это устройство ssd начального уровня, относящееся к бюджетным, а также это мой первый диск SSD. Он также является одним из самых производительных твердотельных накопителей из имеющихся на рынке.
В этом тесте диск ssd подключен к порту sata 2.0.
Скорость записи
Давайте сначала сделаем запись на ssd
$ dd if=/dev/zero of=./largefile bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s
Размер блока, на самом деле, довольно большой. Вы можете попробовать использовать меньший размер, например, 64k или даже 4k.
Скорость чтения
Теперь, наоборот, прочитайте тот же самый файл. Но сначала очистите кэш памяти с тем, чтобы быть уверенным, что файл, на самом деле, читается с диска.
Для того, чтобы очистить кэш памяти, выполните следующую команду
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
Теперь прочитайте файл
$ dd if=./largefile of=/dev/null bs=4k 165118+0 records in 165118+0 records out 676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
В Википедии для Arch Linux есть страница с информацией о скорости чтения/записи различных твердотельных накопителей разных производителей, например, Intel, Samsung, Sandisk и т.д. Смотрите ссылку https://wiki.archlinux.org/index.php/SSD_Benchmarking
Устройство USB
В этом тесте мы будем измерять скорость чтения и обыкновенных флеш-накопителей usb. Устройства подключаются к стандартным портам usb 2. Первым устройством является usb-накопитель sony 4gb, а вторым - strontium 16gb.
Сначала подключите устройство и смонтируйте его так, чтобы оно было доступно для чтения. Затем из командной строки перейдите в смонтированный каталог.
Устройство Sony 4GB - запись
В этом тесте, команда dd используется для записи 10000 кусков данных по 8 Кбайт каждый в один файле на диске.
# dd if=/dev/zero of=./largefile bs=8k count=10000 10000+0 records in 10000+0 records out 81920000 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s
Скорость записи составляет около 7,5 Мбайт/с. Это низкий показатель.
Устройство Sony 4GB - чтение
Тот же самый файл считывается для проверки скорости чтения. Для того, чтобы очистить кэш памяти, выполните следующую команду
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
Теперь прочитайте файл с помощью команды dd
# dd if=./largefile of=/dev/null bs=8k 8000+0 records in 8000+0 records out 65536000 bytes (66 MB) copied, 2.65218 s, 24.7 MB/s
Скорость чтения равна приблизительно 25 Мбайт/с, что более или менее стандартно для дешевых флешек usb.
USB 2.0 имеет теоретическую максимальную скорость передачи сигналов равную 480 Мбит/с или 60 Мбайт/с. Но в силу различных ограничений максимальная пропускная способность ограничена приблизительно значением 280 Мбит/с или 35 Мбайт/с. Помимо этого фактическая скорость зависит от качества флешки, а также и от других факторов.
И поскольку описываемое выше устройство usb было подключено к порту USB 2.0 и была достигнута скорость чтения, равная 24,7 Мбайт/с, что не очень плохо. Но скорость записи сильно отстает.
Теперь давайте выполним тот же самый тест с флешкой Strontium 16gb. Strontium — это еще один бренд, под которым выпускаются очень дешевые флешки usb, но эти флешки надежные.
Скорость записи для устройства Strontium 16gb
# dd if=/dev/zero of=./largefile bs=64k count=1000 1000+0 records in 1000+0 records out 65536000 bytes (66 MB) copied, 8.3834 s, 7.8 MB/s
Скорость чтения для устройства Strontium 16gb
# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" # dd if=./largefile of=/dev/null bs=8k 8000+0 records in 8000+0 records out 65536000 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s
Скорость чтения данных ниже, чем для устройства Sony.