Принесли на тест SSD винчестер OCZ Agility 3.
В параметрах указана скорость чтения 500-550 МБ/с.
Подключил, поставил свежую Fedora 17 и решил проверить скорость.# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 624 MB in 3.01 seconds = 207.53 MB/secПодскажите, с чем может бить связано, что скорость в два с половиной раза меньше заявленой?
> Подскажите, с чем может бить связано, что скорость в два с половиной
> раза меньше заявленой?с отделом маркетинга?
а если попробовать dd с большим блоком, порядка мегабайт, сколько выдаёт?
только пишите объём в 3-4 размера оперативки.
да, еще надо подключать SSD в порты SATA-III, которые 6 Гбит/с выдают
Винчестер подключен в SATAIII. На мамке и в биосе пишет 6Гб/с. Я первим делом на САТА2 грешил, и даже кабеля поменял, теперь на них тоже пишет 6Гб/с. (У меня есть подозрение что работает в режиме САТА2)Тест с помощью команды dd.
Создаем тестовый файл.
dd if=/dev/urandom of=/var/sdb/file20g bs=1048576 count=20480
скопійовано 21474836480 байтів (21 GB), 1234,24 с, 17,4 MB/sДаже не знаю как прокоментировать скорость записи. Задержками в /dev/urandom?
# dd if=/dev/urandom of=/var/sdb/file1g1m bs=1048576 count=1024
скопійовано 1073741824 байти (1,1 GB), 61,5922 с, 17,4 MB/s
# dd if=/dev/urandom of=/var/sdb/file1g1k bs=1024 count=1048576
скопійовано 1073741824 байти (1,1 GB), 63,8348 с, 16,8 MB/sразмер блока получается не влияет.....
места свободного еще много (читал ето влияет на скорость записи)
/dev/sdb1 117049960 26059460 85129536 24% /var/sdbПерегружаемся, для чистоты експеримента и тест на чтение
dd if=/var/sdb/file20g of=/dev/null bs=1048576 count=20480
скопійовано 21474836480 байтів (21 GB), 115,4 с, 186 MB/sdd if=/var/sdb/file20g of=/dev/null bs=1024 count=20971520
скопійовано 21474836480 байтів (21 GB), 113,281 с, 190 MB/s
во первых: пиши на сырое устройство (/dev/sdb или что там у тебя).
во вторых: пиши из /dev/zero, а не из рандома.
Обновил БИОС мамки.
Последующие тесты (через hdparm) не показали изменений. Были наоборот ухудшения, связаные с неоптимальными настройками биос. Скорость колебалась от 180 до 202 МБ/с.Вспомнил что есть еще второй винт. Таже марка, тотже firware 2.15, но ебемом побольше. Первый был 120Г а второй 240Г. Втыкаю второй - глаза на лоб. Скорость 404 МБ/с.
Значит винт барахлит? Для гарантии опять втыкаю 120-ку и ... скорость уже 367 МБ/сhdparm -t /dev/sdb
Timing buffered disk reads: 1114 MB in 3.00 seconds = 370.77 MB/secв догонку еще пару команд для проверки скорости
смотрим скорость записи
dd if=/dev/zero of=/dev/sdb bs=1000000 count=10000
скопійовано 10000000000 байтів (10 GB), 24,6009 с, 406 MB/sа теперь скорость чтения
dd if=/dev/sdb of=/dev/null bs=1000000 count=10000
скопійовано 10000000000 байтів (10 GB), 25,86 с, 387 MB/sкак он "вылечился" непонимаю. Может кто обяснит? Подозреваю что связано с тем что винт использовался без функции TRIM и не происходила подготовка ячеек.
и еще парочка команд для "закрепления" успеха. Но результат ....
пишем нули в первый гигабайт - быстро
# dd if=/dev/zero of=/dev/sdb bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 2,38713 с, 419 MB/sчитаем эти же нули - быстро
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 2,42252 с, 413 MB/sпишем что-то отличное от нулей в первый гигабайт - очень медленно (считаем что связано с /dev/urandom)
# dd if=/dev/urandom of=/dev/sdb bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 55,7729 с, 17,9 MB/sтеперь читаем это что-то
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 5,20123 с, 192 MB/s
А скорость то теперь не та..... Нули я читаю быстро=400МБ/с, а дание=192МБ/с.....Первый гигабай содержит дание, а второй гигабайт у нас заполнен нулями. и если читать теперь два гигабайта
# dd if=/dev/sdb of=/dev/null bs=1000000 count=2000
скопійовано 2000000000 байтів (2,0 GB), 7,81649 с, 256 MB/s
то получаем что-то среднеену или можна сразу прочесть второй гигабай (с нулями)
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000 skip=1000
скопійовано 1000000000 байтів (1,0 GB), 2,68008 с, 373 MB/sУважаемые гуру! Интересно услышать Ваши мнения. Так и должно быть? Или я что-то недопонимаю.
для начала нужно понять, что random работает медленно и при записи у тебя все упирается в одно ядро процессора.скорость у тебя выросла, потому что ты стал тестить нормально, как я и говорил, не через фс, а напрямую обращаясь к устройству.
про медленное-быстрое чтение: поменяй блоки нулей и рандома местами и проверь по новой, если повториться падение именно на блоке рандома - ну будет очень интересно и забавно...
Я согласен "интересно и забавно"....reboot - для "профилактики"
тест 1
первый блок (гигабай) забиваем нулями
# dd if=/dev/zero of=/dev/sdb bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 2,37326 с, 421 MB/sвторой гиг рандомом (не смотрим на скорость записи)
# dd if=/dev/urandom of=/dev/sdb bs=1000000 count=1000 seek=1000
скопійовано 1000000000 байтів (1,0 GB), 55,8409 с, 17,9 MB/sчитаем первий блок с нулями
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 2,48221 с, 403 MB/sчитаем второй блок с даними
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000 skip=1000
скопійовано 1000000000 байтів (1,0 GB), 5,20914 с, 192 MB/sпроверям скорост hdparm (я так понимаю она читает первий гиг, ну и чуть-чуть второго)
# hdparm -t /dev/sdb
Timing buffered disk reads: 1066 MB in 3.01 seconds = 354.40 MB/secтест 2
теперь наоборот: второй блок нулями, а первий блок рандомом
# dd if=/dev/zero of=/dev/sdb bs=1000000 count=1000 seek=1000
скопійовано 1000000000 байтів (1,0 GB), 2,38025 с, 420 MB/s
# dd if=/dev/urandom of=/dev/sdb bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 53,8513 с, 18,6 MB/sчитаем первый блок с даними
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 5,22149 с, 192 MB/sчитаем второй блок с нулями
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000 skip=1000
скопійовано 1000000000 байтів (1,0 GB), 2,46108 с, 406 MB/sну и hdparm
# hdparm -t /dev/sdb
Timing buffered disk reads: 552 MB in 3.00 seconds = 183.70 MB/secтеперь повторно тест 1 и снова тест 2
тест 1 - без коментариев. результат тот-же
# dd if=/dev/zero of=/dev/sdb bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 2,34521 с, 426 MB/s
# dd if=/dev/urandom of=/dev/sdb bs=1000000 count=1000 seek=1000
скопійовано 1000000000 байтів (1,0 GB), 55,8362 с, 17,9 MB/s
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 2,46851 с, 405 MB/s
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000 skip=1000
скопійовано 1000000000 байтів (1,0 GB), 5,23399 с, 191 MB/s
# hdparm -t /dev/sdb
Timing buffered disk reads: 1066 MB in 3.01 seconds = 354.16 MB/secтест 2 - аналогично
# dd if=/dev/zero of=/dev/sdb bs=1000000 count=1000 seek=1000
скопійовано 1000000000 байтів (1,0 GB), 2,38057 с, 420 MB/s
# dd if=/dev/urandom of=/dev/sdb bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 55,7857 с, 17,9 MB/s
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000
скопійовано 1000000000 байтів (1,0 GB), 5,21615 с, 192 MB/s
# dd if=/dev/sdb of=/dev/null bs=1000000 count=1000 skip=1000
скопійовано 1000000000 байтів (1,0 GB), 2,46573 с, 406 MB/s
# hdparm -t /dev/sdb
Timing buffered disk reads: 552 MB in 3.00 seconds = 183.97 MB/secну и как последний гвоздь, произведем чтение двух блоков. Скорость должна бить где-то посредине между 200 и 400 = 300 МБ/с. Проверяем....
сейчас (после теста 2) первий гиг с даними второй с нулями
# dd if=/dev/sdb of=/dev/null bs=1000000 count=2000
скопійовано 2000000000 байтів (2,0 GB), 7,69297 с, 260 MB/sа теперь наоборот первий блок нули а второй рандом...
# dd if=/dev/zero of=/dev/sdb bs=1000000 count=1000
# dd if=/dev/urandom of=/dev/sdb bs=1000000 count=1000 seek=1000
и проверяем
dd if=/dev/sdb of=/dev/null bs=1000000 count=2000
скопійовано 2000000000 байтів (2,0 GB), 7,69142 с, 260 MB/sКак мне кажется доказательств больше не надо.
Теперь надо разумное обяснение происшедшего.
Из мислей в догонку, только - архивирование? (но куда и зачем?)
Я винчестер покупаю что-бы хранить/читать даные а не нули....
хотя возможно это специфика работы SSD...
но что-то не читал о таком. (может мало читал)
да, заставили задуматься, но "1", ниже, дал ответ этому поведению. думаю сейчас уместно будет сказать: оууу :)
контроллер SandForce почитай http://it-hack.ru/?p=2427
Значит все-таки мало читал.....
Познавательная статейка.
Спасибо всем.
Считаю тему закрытой.