Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Multcount – od multiple sector count – jest to liczba wielu sektorów, a innymi słowy wartość ta określa, ile sektorów pobierana jest z dysku twardego w czasie jednego przerwania Input / Output (We-jścia / Wy-jścia). Wartość tą obsługują prawie wszystkie nowoczesne dyski IDE. Po włączeniu tej funkcji obciążenie dyskowego I/O przez system operacyjny zmniejsza się o od 30 do 50%. W wielu komputerach powoduje też zwiększenie się przepustowości danych – od 5 do 50%.
próbowałem ustawić na 16 obecnie jest ustawione 1
hdparm /dev/sda
/dev/sda: multcount = 1 (on) IO_support = 1 (32-bit) readonly = 0 (off) readahead = 256 (on) geometry = 20023/255/63,
hdparm -m16 /dev/sda
/dev/sda:
setting multcount to 16
Use of -m is VERY DANGEROUS.
Only the old IDE drivers work correctly with -m with kernels up to at least 2.6.29.
libata drives may fail and get hung if you set this flag.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.
MÓJ DYSK OBSŁUŻY 16
Capabilities:
LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Standard, with device specific minimum R/W multiple sector transfer: Max = 16 Current = 1 Recommended acoustic management value: 128, current value: 128 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=120ns IORDY flow control=120ns
JEST JAKIEŚ ZAGROŻENIE ŻE COŚ SIĘ ZEPSUJE JEŚLI TAK TO JAKIE ? Warto ustawić multcount na 16 ?
chciałbym ustawić też I/O Support na 32 sync
hdparm -c0 // Set operating mode to 16-bits. hdparm -c1 // Set operating mode to 32-bits. hdparm -c3 // Set operating mode to 32-bits synchronized.
Czy mój dysk to obsłuży ?
hdparm -c3 /dev/sda
/dev/sda: setting 32-bit IO_support flag to 3 HDIO_SET_32BIT failed: Invalid argument IO_support = 1 (32-bit)
Ostatnio edytowany przez Danio (2015-10-05 03:34:12)
Offline
A to ciekawy ficzer. Sprawdziłem u siebie i mam go wyłączonego. Dodatkowo ja mam ustawiony "read ahead" na 256, co daje odczyt 32KiB danych przy każdym odwołaniu się do dysku, co raczej spowalnia trochę pracę systemu, bo jakby nie patrzeć te pliki mają zwykle o wiele mniejszy rozmiar. Oczywiście, do tego jeszcze dochodzi ich położenie ale jakoś nie zakładałbym, że te pliki występują na dysku jeden po drugim.
Ja sobie jeszcze o tym doczytam i pewnie poprzestawiam co nieco. xD
___
No i ustawiłem sobie:
# hdparm -I /dev/sda |grep 'R/W multiple sector transfer' R/W multiple sector transfer: Max = 16 Current = 0 # hdparm --yes-i-know-what-i-am-doing -m 16 /dev/sda /dev/sda: setting multcount to 16 multcount = 16 (on) # hdparm -I /dev/sda |grep 'R/W multiple sector transfer' R/W multiple sector transfer: Max = 16 Current = 16
W logu pokazało się:
Oct 05 07:01:09 morfikownia kernel: ata1.00: configured for UDMA/100 Oct 05 07:01:09 morfikownia kernel: ata1: EH complete
Ale jakiejś różnicy nie widać:
# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 5104 MB in 2.00 seconds = 2552.20 MB/sec Timing buffered disk reads: 276 MB in 3.01 seconds = 91.59 MB/sec Timing cached reads: 5140 MB in 2.00 seconds = 2569.99 MB/sec Timing buffered disk reads: 286 MB in 3.02 seconds = 94.84 MB/sec Timing cached reads: 4740 MB in 2.00 seconds = 2370.27 MB/sec Timing buffered disk reads: 280 MB in 3.01 seconds = 92.91 MB/sec
Wartości są zbliżone do tych co były wcześniej, nawet przed było 97MB/sec ale też i 88MB/sec, także tutaj raczej nic nie pomogło. Choć jak czytam sobie na necie to:
IMPORTANT: On the Western Digital Caviar Disk it’s known that this setting slows them down.
-- http://ubuntuforums.org/showthread.php?t=459101
Sprawdziłem też na wartości 8 ale też jakoś nie idzie różnicy zauważyć, także ja to sobie zostawię na 16 póki co.
Przestawiłem też read ahead, na to co zalecają, czyli na wartość tego powyższego parametru i tu już widać różnicę:
# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 4256 MB in 2.00 seconds = 2128.26 MB/sec Timing buffered disk reads: 214 MB in 3.00 seconds = 71.27 MB/sec Timing cached reads: 4806 MB in 2.00 seconds = 2403.15 MB/sec Timing buffered disk reads: 166 MB in 3.01 seconds = 55.23 MB/sec Timing cached reads: 4798 MB in 2.00 seconds = 2399.40 MB/sec Timing buffered disk reads: 196 MB in 3.00 seconds = 65.30 MB/sec
Przy 64 zaś zdaje się być w granicach maximum. Zatem można z tych 256 zjechać na 64.
Offline
W logu pokazało się:
Kod: Oct 05 07:01:09 morfikownia kernel: ata1.00: configured for UDMA/100 Oct 05 07:01:09 morfikownia kernel: ata1: EH complete
nie powinieneś mieć UDMA/ 133 ?
jak przestawiłeś read ahead ? u mnie jest 256
hdparm /dev/sda
/dev/sda:
multcount = 16 (on)
IO_support = 1 (32-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 20023/255/63, sectors = 321672960, start = 0
multcount też już przestawiłem
jeszcze IO_support chciałbym na 32 sync ale nie wiem czy da radę i czy to bezpieczne.
hdparm -k /dev/sda
/dev/sda: HDIO_GET_KEEPSETTINGS failed: Inappropriate ioctl for device
nie chce pamiętać ustawień
Offline
nie powinieneś mieć UDMA/ 133 ?
No mój dysk nie obsługuje trybu 6 UDMA, choć to dziwne:
# hdparm -I /dev/sda |grep DMA: DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
jak przestawiłeś read ahead ?
# hdparm -a 64 /dev/sda
jeszcze IO_support chciałbym na 32 sync
U mnie dysk nie obsługuje tego. Jeśli u ciebie obsługuje, to sobie ustaw, choć na necie piszą, że to może spowolnić transfer.
nie chce pamiętać ustawień
No bo trzeba to zapisać w pliku /etc/hdparm.conf .
Ostatnio edytowany przez morfik (2015-10-05 09:59:19)
Offline
Doczytałem jeszcze trochę i wychodzi na to, że z tym hdparm w debianie to jest syf. Przede wszystkim, tutaj jest jakiś skrypt init, który wczytuje ustawienia z plików /etc/hdparm.conf i /etc/default/hdparm.conf i to rozwiązanie jest tylko stosowane na debianie i nigdzie indziej. Ja próbowałem ustawić sobie te opcje via /etc/hdparm.conf ale jako, że tam jedna wymaga podania --yes-i-know-what-i-am-doing , to nie idzie jej ustawić. Próbowałem to dopisać w hdparm_opts w /etc/default/hdparm.conf ale też ciągle błęda wyrzucało przy aplikowaniu ustawień.
W końcu się wnerwiłem i wywaliłem cały ten skrypt init od hdparm z autostartu i postanowiłem poszukać jakiejś alternatywnej metody. Na liście mailingowej systemd było zapytanie na temat poprawnego sposobu na aplikowanie ustawień hdparm i wyszło na to, że powinno się to robić via udev przy jednoczesnym zrezygnowaniu z tych dodatkowych debianowych wynalazków. Na archwiki jest nawet info jak to zrobić. Z tym, że tamto rozwiązanie nieco ssie, bo operuje na dyskach typu sda, sdb, a jak ktoś podopnie inny dysk i zamienią się one literkami, to wtedy będzie problem.
Ja u siebie napisałem regułkę w taki sposób:
ACTION=="add", SUBSYSTEM=="block", \ ENV{ID_SERIAL}=="WDC_WD2500BEKT-60A25T1_WD-WX41A90E5928", \ RUN+="/sbin/hdparm --yes-i-know-what-i-am-doing -m 16 -a 64 /dev/disk/by-id/ata-WDC_WD2500BEKT-60A25T1_WD-WX41A90E5928"
Jadę po serialu urządzenia, co gwarantuje, że ta reguła tylko do tego konkretnego dysku będzie aplikowana. Trzeba tylko uważać na ten powyższy link w /dev/disk/by-id/ , bo on jest tworzony przez inna regułę udeva (/lib/udev/rules.d/60-persistent-storage.rules), i trzeba tak dobrać numer dla pliku, by ta powyższa reguła została w ogóle zaaplikowana. Dodatkowo, jest także /lib/udev/rules.d/85-hdparm.rules i na dobrą sprawę to dać numer 90. xD
# udevadm test /sys/block/sda/ ... run: '/lib/udev/hdparm' run: '/sbin/hdparm --yes-i-know-what-i-am-doing -m 16 -a 64 /dev/disk/by-id/ata-WDC_WD2500BEKT-60A25T1_WD-WX41A90E5928'
Zatem reguła jest aplikowana pomyślnie, co można sprawdzić też po restarcie via hdparm. Także ten cały debianowy syf od hdparm można wywalić z powodzeniem i jechać na samym udevie.
Offline
ACTION=="add", SUBSYSTEM=="block", \ ENV{ID_SERIAL}=="WDC_WD2500BEKT-60A25T1_WD-WX41A90E5928", \ RUN+="/sbin/hdparm --yes-i-know-what-i-am-doing -m 16 -a 64 /dev/disk/by-id/ata-WDC_WD2500BEKT-60A25T1_WD-WX41A90E5928"
tą regułkę to gdzie dopisujesz ?
Offline
Pewnie w pliku:
/etc/udev/rules.d/65-dyzio.rules
albo jakiś podobny (trzeba utworzyć).
Nie wiem tylko dokładnie, jakie znaczenie mają te cyferki na początku nazwy. :P
Ostatnio edytowany przez Jacekalex (2015-10-07 08:55:34)
Offline
No tak w /etc/udev/rules.d/ tylko numer dać z 90.
A cyferki odpowiadają za kolejność czytania reguł -- te z niższym są czytane jako pierwsze. Zatem jeśli jest reguła co ma numer 60 i tworzy ona link do urządzenia i ten link jest wykorzystywany w jakiejś innej regule, to jej numer musi być większy od 60, bo inaczej nie będzie linku i reguła nie zostanie dopasowania. xD
Offline
/etc/udev/rules.d/90-dyzio.rules Zamiast dyzio dać nazwę swego usera ? czy to obojętne ?
Offline
stworzyłem plik i nadal nie mam multicount 16 po restarcie
nano /etc/udev/rules.d/90-dyzio.rules
ACTION=="add", SUBSYSTEM=="block", \ ENV{ID_SERIAL}=="WD-WCAP01521905", \ RUN+="/sbin/hdparm --yes-i-know-what-i-am-doing -m 16 /dev/disk/by-id/ata-WDC_WD1600YS-01SHB0_WD-WCAP01521905"
hdparm -I /dev/sda
/dev/sda: ATA device, with non-removable media Model Number: WDC WD1600YS-01SHB0 Serial Number: WD-WCAP01521905 Firmware Revision: 20.06C03 Standards: Supported: 7 6 5 4 Likely used: 8 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 321672960 Logical/Physical Sector size: 512 bytes device size with M = 1024*1024: 157066 MBytes device size with M = 1000*1000: 164696 MBytes (164 GB) cache/buffer size = 16384 KBytes Capabilities: LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Standard, with device specific minimum R/W multiple sector transfer: Max = 16 Current = 1 Recommended acoustic management value: 128, current value: 128 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=120ns IORDY flow control=120ns Commands/features: Enabled Supported: * SMART feature set Security Mode feature set * Power Management feature set * Write cache * Look-ahead * Host Protected Area feature set * WRITE_BUFFER command * READ_BUFFER command * NOP cmd * DOWNLOAD_MICROCODE Power-Up In Standby feature set * SET_FEATURES required to spinup after power up SET_MAX security extension * Automatic Acoustic Management feature set * 48-bit Address feature set * Device Configuration Overlay feature set * Mandatory FLUSH_CACHE * FLUSH_CACHE_EXT * SMART error logging * SMART self-test * General Purpose Logging feature set * WRITE_{DMA|MULTIPLE}_FUA_EXT * Gen1 signaling speed (1.5Gb/s) * Gen2 signaling speed (3.0Gb/s) * Native Command Queueing (NCQ) * Host-initiated interface power management * Phy event counters * DMA Setup Auto-Activate optimization * Software settings preservation * SMART Command Transport (SCT) feature set * SCT Read/Write Long (AC1), obsolete * SCT Write Same (AC2) * SCT Error Recovery Control (AC3) * SCT Features Control (AC4) * SCT Data Tables (AC5) unknown 206[12] (vendor specific) Security: Master password revision code = 65534 supported not enabled not locked frozen not expired: security count not supported: enhanced erase 56min for SECURITY ERASE UNIT.
a kiedy wydam polecenie :
root@debian:/home/okularnik# hdparm --yes-i-know-what-i-am-doing -m 16 /dev/disk/by-id/ata-WDC_WD1600YS-01SHB0_WD-WCAP01521905
/dev/disk/by-id/ata-WDC_WD1600YS-01SHB0_WD-WCAP01521905:
setting multcount to 16
multcount = 16 (on)
Offline
ok ...dodałem do /etc/rc.local
linijkę
hdparm --yes-i-know-what-i-am-doing -m 16 /dev/disk/by-id/ata-WDC_WD1600YS-01SHB0_WD-WCAP01521905
Offline
Strony: 1