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

Обмен опытом по установке Линукс на разные аппаратные конфигурации

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 24 окт 2011, 20:56

Пока меряли производительность виртуальных машин:
viewtopic.php?f=9&t=1503&start=20
возникло некоторое недоумение:

Код: Выделить всё

[olej@nvidia ~]$ hdparm --help
hdparm - get/set hard disk parameters - version v9.27, by Mark Lord.
...
 -t   Perform device read timings
 -T   Perform cache read timings
...

Код: Выделить всё

[olej@nvidia ~]$ sudo hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads:  358 MB in  3.00 seconds = 119.20 MB/sec
[olej@nvidia ~]$ sudo hdparm -t /dev/sdb
/dev/sdb:
 Timing buffered disk reads:  318 MB in  3.01 seconds = 105.81 MB/sec
[olej@nvidia ~]$ sudo hdparm -T /dev/sda
/dev/sda:
 Timing cached reads:   2792 MB in  2.00 seconds = 1396.46 MB/sec
[olej@nvidia ~]$ sudo hdparm -T /dev/sdb
/dev/sdb:
 Timing cached reads:   2826 MB in  2.00 seconds = 1413.02 MB/sec
Я как-то не понимаю, как так поменялись цифры (местами, между a и b при кешированном чтении)?
При том, что sda превосходит sdb по всем параметрам, как мне кажется? :

Код: Выделить всё

[olej@nvidia ~]$ sudo hdparm -i /dev/sda
/dev/sda:
 Model=WDC WD2500AAKX-001CA0, FwRev=15.01H15, SerialNo=WD-WMAYU0425651
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50
 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=488397168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

[olej@nvidia ~]$ sudo hdparm -i /dev/sdb
/dev/sdb:
 Model=STM3160318AS, FwRev=CC35, SerialNo=9VY0E3WK
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=312581808
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 24 окт 2011, 21:26

Olej писал(а): Я как-то не понимаю,
Но смущает даже не это, а на другом компьютере:

Код: Выделить всё

olej@atom:~$ sudo hdparm -i /dev/sda
[sudo] password for olej:
/dev/sda:
 Model=KINGSTON, FwRev=AJXA0202, SerialNo=20LM10BQM83Z
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=58626288
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7

 * signifies the current active mode

olej@atom:~$ sudo hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  392 MB in  3.01 seconds = 130.09 MB/sec
olej@atom:~$ sudo hdparm -T /dev/sda
/dev/sda:
 Timing cached reads:   1204 MB in  2.00 seconds = 602.03 MB/sec
но это твердотельный KINGSTON SDD, на нём субъективно видно как всё "летает", загрузка Ubuntu 10.4 идёт 8 сек. от включения питания... ну, не может там обмен быть медленнее в 2 раза, чем на достаточно заурядных HDD.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 27 окт 2011, 14:01

Некоторые (приятные) дополнения к измерениям hdparm:
1. ключи -t & -T для hdparm могут указываться одновременно;
2. hdparm понимает SD-карточки (чего, например, на дух не понимает fdisk):

Код: Выделить всё

[olej@notebook ~]$ sudo hdparm -tT /dev/mmcblk0p1

/dev/mmcblk0p1:
 Timing cached reads:   1348 MB in  2.00 seconds = 675.25 MB/sec
 Timing buffered disk reads:   22 MB in  3.05 seconds =   7.22 MB/sec

[olej@notebook ~]$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   2062 MB in  2.00 seconds = 1032.50 MB/sec
 Timing buffered disk reads:  102 MB in  3.04 seconds =  33.58 MB/sec
Но мне (пока) так и не понятно, что же меряет как "buffered disk reads" - скорость потока с диска, считываемого этим конкретным CPU? в зависимости от его скорости?
Потому что вот это:

Код: Выделить всё

[olej@notebook ~]$ sudo hdparm -tT /dev/sdb

/dev/sdb:
 Timing cached reads:   1602 MB in  2.00 seconds = 801.11 MB/sec
 Timing buffered disk reads:   88 MB in  3.06 seconds =  28.78 MB/sec
- это данные того же ноутбука, что и выше /dev/sda, для очень быстрого USB pocket диска Transcend TS320GSJ25C ... а цифры чуть ниже (~20%), чем для заурядного встроенного винчестера ноутбука 4-х летней давности :-o

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 27 окт 2011, 17:30

Olej писал(а): - это данные того же ноутбука, что и выше /dev/sda, для очень быстрого USB pocket диска Transcend TS320GSJ25C ... а цифры чуть ниже (~20%), чем для заурядного встроенного винчестера ноутбука 4-х летней давности :-o
Чтоб себе ответить что это за цифры мы видим, пришлось с этим винтом (TS320GSJ25C) обойти 3 разных компьютера и потерять время, но кой чего проясняется ... это любопытно.
Всё тот же исходный ноутбук:

Код: Выделить всё

[olej@notebook 27]$ cat /proc/cpuinfo | grep bogomips
bogomips        : 3324.65
bogomips        : 3324.87

[olej@notebook ~]$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sda5  /dev/sda6  /dev/sda7  /dev/sdb  /dev/sdb1  /dev/sdb2

[olej@notebook ~]$ sudo hdparm -tT /dev/sdb

/dev/sdb:
 Timing cached reads:   1664 MB in  2.00 seconds = 831.77 MB/sec
 Timing buffered disk reads:   92 MB in  3.07 seconds =  30.00 MB/sec

[olej@notebook ~]$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   1606 MB in  2.00 seconds = 802.03 MB/sec
 Timing buffered disk reads:  102 MB in  3.04 seconds =  33.55 MB/sec
- вот его процессор (bogomips : 3324.65 ...) кто помнит формат /proc/cpuinfo понимает почему дважды повторяется строка: 2 ядра...
- для сравнения цифры по USB Transcend и по родному винчестеру (и так для других хостов).

Код: Выделить всё

olej@atom:/home$ cat /proc/cpuinfo | grep bogomips
bogomips        : 3191.62
bogomips        : 3192.16
bogomips        : 3192.20
bogomips        : 3599.93

olej@atom:/home$ sudo hdparm -tT /dev/sdb

/dev/sdb:
 Timing cached reads:   1188 MB in  2.00 seconds = 594.10 MB/sec
 Timing buffered disk reads:   98 MB in  3.01 seconds =  32.59 MB/sec

olej@atom:/home$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   1210 MB in  2.00 seconds = 605.30 MB/sec
 Timing buffered disk reads:  494 MB in  3.01 seconds = 164.32 MB/sec
olej@atom:/home$ sudo hdparm -i /dev/sda

/dev/sda:

 Model=KINGSTON, FwRev=AJXA0202, SerialNo=20LM10BQM83Z
...
- это 4-х ядерный, но Atom ... bogomips того же порядка...
- цифра -t (buffered disk reads) - практически та же, что в предыдущем случае...
- а вот для родного винта эта цифра много больше - там стоит SDD, твердотельный
- но цифра для -T (cached reads) для очень разных винтов близкие (как и в предыдущем случае тоже) - эти цифры определяются платформой, а не диском.

Код: Выделить всё

[olej@nvidia ~]$ cat /proc/cpuinfo | grep bogomips
bogomips        : 6139.48
bogomips        : 8471.31
[olej@nvidia ~]$ cat /proc/cpuinfo | grep bogomips
bogomips        : 6139.48
bogomips        : 8471.31
[olej@nvidia ~]$ sudo hdparm -tT /dev/sdc

/dev/sdc:
 Timing cached reads:   2934 MB in  2.00 seconds = 1467.32 MB/sec
 Timing buffered disk reads:  106 MB in  3.05 seconds =  34.70 MB/sec

[olej@nvidia ~]$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   3024 MB in  2.00 seconds = 1511.79 MB/sec
 Timing buffered disk reads:  366 MB in  3.01 seconds = 121.57 MB/sec

- намного быстрее платформа...
- buffered disk reads - отличаются в 4 раза (там родной - добротный WD из новых)...
- cached reads - практически одинаковы, потому как определяются платформой... но в 2 раза выше, чем в предыдущих случаях, так же как в 2 раза выше bogomips.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 28 окт 2011, 20:04

Ещё один способ оценить производительность дисковой подсистемы, но на этот раз уже на уровне операций файловой системы (что может и правильнее) это что-то типа:
- запись:

Код: Выделить всё

[olej@notebook 28]$ dd if=/dev/zero of=dd.img bs=512 count=300000
...
- считывание (того, что предварительно записано):

Код: Выделить всё

[olej@notebook 28]$ dd if=dd.img of=/dev/null bs=512
...
- и запись с последующим считыванием (обе операции):

Код: Выделить всё

[olej@notebook 28]$ dd if=dd.img of=dd1.img bs=512 count=300000
...
Я пока здесь специально не показал результатов, потому как они очень сильно зависят от загруженности системы и планировщика, вот 3 последовательных выполнения одной и той же команды:

Код: Выделить всё

[olej@notebook 28]$ dd if=/dev/zero of=dd.img bs=512 count=1000
1000+0 записей считано
1000+0 записей написано
 скопировано 512000 байт (512 kB), 0,0140746 c, 36,4 MB/c
[olej@notebook 28]$ dd if=/dev/zero of=dd.img bs=512 count=1000
1000+0 записей считано
1000+0 записей написано
 скопировано 512000 байт (512 kB), 0,00697896 c, 73,4 MB/c
[olej@notebook 28]$ dd if=/dev/zero of=dd.img bs=512 count=1000
1000+0 записей считано
1000+0 записей написано
 скопировано 512000 байт (512 kB), 0,0135965 c, 37,7 MB/c
- это слишком большой разброс, чтобы считаться называться :lol:

Поэтому я использовал вот такие команды (а заодно убрав мусор из вывода):

Код: Выделить всё

[olej@notebook 28]$ sudo nice -n-10 dd if=/dev/zero of=dd.img bs=512 count=1000 2>&1 | grep '(' | sed s/скопировано/записано/
 записано 512000 байт (512 kB), 0,00640975 c, 79,9 MB/c
[olej@notebook 28]$ sudo nice -n-10 dd if=dd.img of=/dev/null bs=512 2>&1 | grep '(' | sed s/скопировано/прочитано/
 прочитано 512000 байт (512 kB), 0,00190201 c, 269 MB/c
- это последовательно запись и чтение, и при повторениях ошибка здесь не будет гулять более 5%

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 28 окт 2011, 20:36

Olej писал(а):- это последовательно запись и чтение, и при повторениях ошибка здесь не будет гулять более 5%
Сделал я себе набор примитивных скриптиков, и ними можно наблюдать прелюбопытнейшие результаты (рекомендую ;-) ):

Код: Выделить всё

[olej@notebook 28]$ cat w
BLOCK=$1
COUNT=$2
sudo nice -n-10 dd if=/dev/zero of=dd.img bs=$BLOCK count=$COUNT 2>&1 | grep '(' | sed s/скопировано/записано/
[olej@notebook 28]$ cat r
BLOCK=$1
sudo nice -n-10 dd if=dd.img of=/dev/null bs=$BLOCK 2>&1 | grep '(' | sed s/скопировано/прочитано/
[olej@notebook 28]$ cat wr
BLOCK=$1
COUNT=$2
echo $COUNT блоков размером $BLOCK каждый
./w $BLOCK $COUNT
./r $BLOCK

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 28 окт 2011, 21:14

Olej писал(а):можно наблюдать прелюбопытнейшие результаты (рекомендую ;-) ):
1. вот запись примерно одинакового (относительно небольшого) объёма:

Код: Выделить всё

[olej@notebook 28]$ ./w 512 200000
 записано 102400000 байт (102 MB), 1,29574 c, 79,0 MB/c
[olej@notebook 28]$ ./w 512 200000
 записано 102400000 байт (102 MB), 1,27213 c, 80,5 MB/c
[olej@notebook 28]$ ./w 1K 100000
 записано 102400000 байт (102 MB), 0,806875 c, 127 MB/c
[olej@notebook 28]$ ./w 2K 50000
 записано 102400000 байт (102 MB), 0,546489 c, 187 MB/c
[olej@notebook 28]$ ./w 4K 25000
 записано 102400000 байт (102 MB), 0,417041 c, 246 MB/c
[olej@notebook 28]$ ./w 8K 12500
 записано 102400000 байт (102 MB), 0,3769 c, 272 MB/c
[olej@notebook 28]$ ./w 8K 16000
 записано 131072000 байт (131 MB), 0,474187 c, 276 MB/c
[olej@notebook 28]$ ./w 16K 8000
 записано 131072000 байт (131 MB), 0,445585 c, 294 MB/c
[olej@notebook 28]$ ./w 32K 4000
 записано 131072000 байт (131 MB), 0,449369 c, 292 MB/c
[olej@notebook 28]$ ./w 64K 2000
 записано 131072000 байт (131 MB), 0,444849 c, 295 MB/c
[olej@notebook 28]$ ./w 128K 1000
 записано 131072000 байт (131 MB), 0,453105 c, 289 MB/c
- как я понимаю, здесь вся запись идёт в дисковый кэш, и только на очень частой записи маленьких блоков кэш начинает захлёбываться...

2. а вот большие объёмы, когда, предполагаю, дисковый кэш уже не спасает:

Код: Выделить всё

[olej@notebook 28]$ ./w 8K 10000
 записано 81920000 байт (82 MB), 0,29871 c, 274 MB/c
[olej@notebook 28]$ ./w 8K 20000
 записано 163840000 байт (164 MB), 0,820993 c, 200 MB/c
[olej@notebook 28]$ ./w 8K 21000
 записано 172032000 байт (172 MB), 1,04277 c, 165 MB/c
[olej@notebook 28]$ ./w 8K 22000
 записано 180224000 байт (180 MB), 1,52944 c, 118 MB/c
[olej@notebook 28]$ ./w 8K 25000
 записано 204800000 байт (205 MB), 2,19758 c, 93,2 MB/c
[olej@notebook 28]$ ./w 8K 30000
 записано 245760000 байт (246 MB), 4,2402 c, 58,0 MB/c
[olej@notebook 28]$ ./w 8K 40000
 записано 327680000 байт (328 MB), 7,0826 c, 46,3 MB/c
[olej@notebook 28]$ ./w 8K 50000
 записано 409600000 байт (410 MB), 10,0855 c, 40,6 MB/c
[olej@notebook 28]$ ./w 8K 70000
 записано 573440000 байт (573 MB), 18,4304 c, 31,1 MB/c
[olej@notebook 28]$ ./w 8K 100000
 записано 819200000 байт (819 MB), 38,9842 c, 21,0 MB/c

- резкий обвал (на порядок) скорости ... особенно резко где-то между 160 и 250 Mb

3. а теперь последний здоровенный файл (819 MB) почитаем с разным блоком:

Код: Выделить всё

[olej@notebook 28]$ ./r 1M
 прочитано 819200000 байт (819 MB), 29,7555 c, 27,5 MB/c
[olej@notebook 28]$ ./r 256K
 прочитано 819200000 байт (819 MB), 30,0496 c, 27,3 MB/c
[olej@notebook 28]$ ./r 64K
 прочитано 819200000 байт (819 MB), 29,5051 c, 27,8 MB/c
[olej@notebook 28]$ ./r 16K
 прочитано 819200000 байт (819 MB), 29,9829 c, 27,3 MB/c
[olej@notebook 28]$ ./r 4K
 прочитано 819200000 байт (819 MB), 30,0607 c, 27,3 MB/c
[olej@notebook 28]$ ./r 1K
 прочитано 819200000 байт (819 MB), 30,0939 c, 27,2 MB/c
[olej@notebook 28]$ ./r 512
 прочитано 819200000 байт (819 MB), 29,8275 c, 27,5 MB/c
- и кэш на таком объёме не помогает, это тот диск для которого:

Код: Выделить всё

[olej@notebook 28]$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   1644 MB in  2.00 seconds = 822.41 MB/sec
 Timing buffered disk reads:   96 MB in  3.07 seconds =  31.24 MB/sec

27 очень похоже на 31 :lol: , с учётом что здесь ещё есть издержки на ext4.

4. ну и последняя группа замеров - чтение, но умеренного объёма файла, когда кэш должен бы работать:

Код: Выделить всё

[olej@notebook 28]$ ./r 5M
 прочитано 51200000 байт (51 MB), 0,0737785 c, 694 MB/c
[olej@notebook 28]$ ./r 1M
 прочитано 51200000 байт (51 MB), 0,0555825 c, 921 MB/c
[olej@notebook 28]$ ./r 512K
 прочитано 51200000 байт (51 MB), 0,0370872 c, 1,4 GB/c
[olej@notebook 28]$ ./r 256K
 прочитано 51200000 байт (51 MB), 0,0349397 c, 1,5 GB/c
[olej@notebook 28]$ ./r 128K
 прочитано 51200000 байт (51 MB), 0,0339115 c, 1,5 GB/c
[olej@notebook 28]$ ./r 32K
 прочитано 51200000 байт (51 MB), 0,0365926 c, 1,4 GB/c
[olej@notebook 28]$ ./r 8K
 прочитано 51200000 байт (51 MB), 0,0438127 c, 1,2 GB/c
[olej@notebook 28]$ ./r 4K
 прочитано 51200000 байт (51 MB), 0,0501534 c, 1,0 GB/c
[olej@notebook 28]$ ./r 2K
 прочитано 51200000 байт (51 MB), 0,0676066 c, 757 MB/c
[olej@notebook 28]$ ./r 1K
 прочитано 51200000 байт (51 MB), 0,109564 c, 467 MB/c
[olej@notebook 28]$ ./r 512
 прочитано 51200000 байт (51 MB), 0,187721 c, 273 MB/c
[olej@notebook 28]$ ./r 256
 прочитано 51200000 байт (51 MB), 0,344049 c, 149 MB/c
[olej@notebook 28]$ ./r 128
 прочитано 51200000 байт (51 MB), 0,645543 c, 79,3 MB/c
[olej@notebook 28]$ ./r 64
 прочитано 51200000 байт (51 MB), 1,27193 c, 40,3 MB/c
[olej@notebook 28]$ ./r 32
 прочитано 51200000 байт (51 MB), 2,45269 c, 20,9 MB/c
(загиб вниз при больших мегабайтных блоках чтения я никак не понимаю).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 28 окт 2011, 21:32

Olej писал(а):
Olej писал(а):можно наблюдать прелюбопытнейшие результаты (рекомендую ;-) ):
Зачем я там дальше так много написал? ;-)

1. потому как измерения в зависимости от условий измерений могут различаться на 2 ( :!: ) порядка (см. чтение с кэшом) ... поэтому прежде чем говорить о скорости куда важнее поинтересоваться: "а для каких условий измерений?"

2. скорости в файловой системе и скорости прямого доступа к диску - практически в пределах одних и тех же значений ... но их трудно соотносить из-за ... см. п.1 ;-)

3. для сравнения производительности разных конфигураций (например, реальных и виртуальных) что-то оценивать можно только при исключительной идентичности параметров измерений ... см. п.1 ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 29 окт 2011, 03:31

Olej писал(а): Сделал я себе набор примитивных скриптиков,
В конце концов, вот такой скрипт который прогоняет целую сетку записей-чтений при логарифмическом росте размера блока:

Код: Выделить всё

# начальные: $1 - размер блока; $2 - число повторений блока; [$3 - длина ряда испытаний]
if [ $# -lt 2 ]
then
   echo "Аргументов командной строки должно быть 2 или 3:"
   echo "$0 <block size[K|M]> <number blocks> [<length>]"
   exit 1
fi


DIG=`expr match "$1" '\(^[0-9]*\)'`
#echo $DIG
SIZE=`expr "$1" : '.*\([MK]$\)'`
#echo $SIZE
case $SIZE in
   M) (( DIG=DIG*1024*1024 ));;
   K) (( DIG=DIG*1024 ));;
   *) ;;
esac
#echo $DIG
let "PROD = $DIG * $2"
echo полный размер файла = $PROD


LIMIT=3
CYCLE=0
if [ -n "$3" ]             # Если переопределена длина ряда
then
   LIMIT=$3
   if [ $LIMIT -gt 19 ]
   then
      echo "Максимальная длина ряда = 19"
      exit 1
   fi
fi
#echo $LIMIT


for MULT in 1 2 5 10 20 50 100 200 500 1000 2000 5000 10000 20000 50000 100000 200000 500000 1000000
do
#   echo $MULT
   let "CYCLE+=1"
   if [ "$CYCLE" -gt $LIMIT ]
   then
      break  # Принудительное завершение цикла.
   fi
   (( BLOCK=$DIG*$MULT ))
   (( COUNT=$PROD/$BLOCK ))
   if [ "$COUNT" -lt 1 ]
   then
      break  # Принудительное завершение цикла.
   fi
   echo $COUNT блоков размером $BLOCK каждый:
   ./w $BLOCK $COUNT
   ./r $BLOCK
done
Что-то типа такого получите:

Код: Выделить всё

[olej@notebook 28]$ ./repwr 256 100000 19
полный размер файла = 25600000
100000 блоков размером 256 каждый:
 записано 25600000 байт (26 MB), 0,55048 c, 46,5 MB/c
 прочитано 25600000 байт (26 MB), 0,190086 c, 135 MB/c
50000 блоков размером 512 каждый:
 записано 25600000 байт (26 MB), 0,754433 c, 33,9 MB/c
 прочитано 25600000 байт (26 MB), 0,106448 c, 240 MB/c
20000 блоков размером 1280 каждый:
 записано 25600000 байт (26 MB), 0,183719 c, 139 MB/c
 прочитано 25600000 байт (26 MB), 0,0474226 c, 540 MB/c
10000 блоков размером 2560 каждый:
 записано 25600000 байт (26 MB), 0,150574 c, 170 MB/c
 прочитано 25600000 байт (26 MB), 0,0337695 c, 758 MB/c
5000 блоков размером 5120 каждый:
 записано 25600000 байт (26 MB), 0,114982 c, 223 MB/c
 прочитано 25600000 байт (26 MB), 0,0256086 c, 1000 MB/c
2000 блоков размером 12800 каждый:
 записано 25600000 байт (26 MB), 0,107287 c, 239 MB/c
 прочитано 25600000 байт (26 MB), 0,0204745 c, 1,3 GB/c
1000 блоков размером 25600 каждый:
 записано 25600000 байт (26 MB), 0,0879932 c, 291 MB/c
 прочитано 25600000 байт (26 MB), 0,0231332 c, 1,1 GB/c
500 блоков размером 51200 каждый:
 записано 25600000 байт (26 MB), 0,0852751 c, 300 MB/c
 прочитано 25600000 байт (26 MB), 0,0207516 c, 1,2 GB/c
200 блоков размером 128000 каждый:
 записано 25600000 байт (26 MB), 0,0883754 c, 290 MB/c
 прочитано 25600000 байт (26 MB), 0,0265686 c, 964 MB/c
100 блоков размером 256000 каждый:
 записано 25600000 байт (26 MB), 0,0854195 c, 300 MB/c
 прочитано 25600000 байт (26 MB), 0,0185517 c, 1,4 GB/c
50 блоков размером 512000 каждый:
 записано 25600000 байт (26 MB), 0,0879347 c, 291 MB/c
 прочитано 25600000 байт (26 MB), 0,0247208 c, 1,0 GB/c
20 блоков размером 1280000 каждый:
 записано 25600000 байт (26 MB), 0,108819 c, 235 MB/c
 прочитано 25600000 байт (26 MB), 0,0285557 c, 896 MB/c
10 блоков размером 2560000 каждый:
 записано 25600000 байт (26 MB), 0,103032 c, 248 MB/c
 прочитано 25600000 байт (26 MB), 0,0308554 c, 830 MB/c
5 блоков размером 5120000 каждый:
 записано 25600000 байт (26 MB), 0,10658 c, 240 MB/c
 прочитано 25600000 байт (26 MB), 0,0380895 c, 672 MB/c
2 блоков размером 12800000 каждый:
 записано 25600000 байт (26 MB), 0,110105 c, 233 MB/c
 прочитано 25600000 байт (26 MB), 0,0529779 c, 483 MB/c
1 блоков размером 25600000 каждый:
 записано 25600000 байт (26 MB), 0,138143 c, 185 MB/c
 прочитано 25600000 байт (26 MB), 0,0446377 c, 574 MB/c

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Производительность диска

Непрочитанное сообщение Olej » 02 июл 2012, 15:04

Olej писал(а):но это твердотельный KINGSTON SDD, на нём субъективно видно как всё "летает", загрузка Ubuntu 10.4 идёт 8 сек. от включения питания...
Ещё раз пришлось вернуться к вопросам производительности диска в связи с настройками SSD диска:

Код: Выделить всё

olej@atom:~$ sudo hdparm -i /dev/sda
[sudo] password for olej:

/dev/sda:

 Model=KINGSTON, FwRev=AJXA0202, SerialNo=20LM10BQM83Z
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=58626288
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7

 * signifies the current active mode
Попалась мне довольно последовательная (лучшая, что я видел), хоть и не самая свежая (30.05.2010) публикация: Оптимизация системы под SSD.
Рекомендую просмотреть. ;-)
P.S. ну и ещё такой вот источник есть: Настройка Ubuntu для работы с SSD.

А заодно ещё раз соотнести скорости (в первую очередь чтения) HDD & SSD:

Код: Выделить всё

[olej@notebook vm]$ sudo hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads: 102 MB in  3.04 seconds =  33.51 MB/sec

- это старенький Compaq nc6320 (HP) ноутбук.

Код: Выделить всё

[olej@nvidia ~]$ sudo hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads: 362 MB in  3.00 seconds = 120.59 MB/sec
[olej@nvidia ~]$ sudo hdparm -t /dev/sdb
/dev/sdb:
 Timing buffered disk reads: 320 MB in  3.02 seconds = 106.07 MB/sec

- это современный

Код: Выделить всё

[olej@nvidia ~]$ cat /proc/cpuinfo
...
model name	: Pentium(R) Dual-Core  CPU      E6600  @ 3.06GHz
...
+ с 2-мя современными HDD.

Код: Выделить всё

olej@atom:~$ sudo hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads:  452 MB in  3.01 seconds = 150.41 MB/sec
- а это миниатюрный Atom но с SSD диском.
В 5 раз быстрее, чем диск ноутбука!

Конечно, имеет смысл на ноутбуке заменять диск на SSD.
64 Gb по цене уже совершенно приемлемо, а для Linux системы, в качестве рабочей станции, этого вполне достаточно.

Ответить

Вернуться в «Железо для Linux»

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

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