Vraag Hoe kan ik de belasting van de harde schijf op Linux monitoren?


Is er een goed commandoregelhulpprogramma om de harde schijfbelasting op Linux te controleren? Zoiets als top maar dan het bewaken van schijfactiviteit i.s.o. CPU gebruik.

Meer specifiek, ik vermoed dat voor sommige (zwaarbelaste) servers na verschillende optimalisaties op verschillende delen van het programma (s) die erop worden uitgevoerd, het knelpunt nu simpelweg het loggen naar bestanden op de schijf is. Maar ik vind het erg moeilijk om te bepalen hoeveel verkeer de servers aankunnen.

Mijn ideale tool zou iets zijn dat print "Je gebruikt nu 35% van je schijfbandbreedte". Om het even welke ideeën?


88
2018-05-18 13:56


oorsprong


Perfecte vraag, is precies wat ik zocht =) - rafa.ferreira
Het is mogelijk om sysfs rechtstreeks te lezen, zoals /sys/block/sda/stat. Veld # 1 geeft het totale aantal gelezen waarden, veld # 5 is het totale aantal schrijfbewerkingen, veld # 9 is het aantal lopende I / O-bewerkingen. Bekijk meer in kernel.org/doc/Documentation/iostats.txt De waarden zijn niet lang getekend en kunnen inpakken. - sastanin
Dit is een heel goede vraag, want we worstelen altijd met dit probleem op Plesk-servers. Wat echter ontbreekt, is how do you do it with SNMP?. Het is prima om in te loggen en dingen te controleren, maar je hebt echt historische gegevens nodig. - Eugene van der Merwe
unix.stackexchange.com/questions/55212/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


antwoorden:


U kunt hier een vrij goede maat van krijgen met behulp van de iostat tool.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Het schijfgebruik wordt vermeld in de laatste kolom. Dit is gedefinieerd als

Percentage van de CPU-tijd gedurende welke I / O-aanvragen zijn verzonden naar het apparaat   (bandbreedtebenutting voor het apparaat). Apparaatverzadiging   treedt op wanneer deze waarde bijna 100% is.


77
2018-05-18 14:15



In welk pakket bevindt dit zich in Debian, indien aanwezig? apt-cache dump veranderde niets voor iostat - hBy2Py
@Brian: het zit in het sysstat-pakket (door yum toch ...) - Joe
@Joe Nifty, bedankt! - hBy2Py
Kon dit niet vinden op RHEL 6.5. Is dit beschikbaar voor RHEL? - Hazok
Kan dit werken zonder een vertraging te hebben? Probeert u om een ​​enkel exemplaar uit te voeren om gegevens van hetzelfde nummer te krijgen, vermoedelijk omdat het geen monsters kan nemen ??? - Wilf


iotop is een versie van de top die kijkt naar hoeveel IO elk proces gebruikt. Het zit in de standaard ubuntu-repositories; Ik weet niet of het in RHEL of Fedora is, maar het zou moeten zijn.

enter image description here

Voor oudere kernels (zeg CentOS 5.x of RHEL 5.x) die iotop niet ondersteunen, gebruikt u in plaats daarvan topio (hier gedocumenteerd: http://yong321.freeshell.org/freeware/pio.html#linux. Het is gebaseerd op / proc // io voor io-statistieken en biedt vergelijkbare functionaliteit als iotop. Zie link voor meer informatie.


75
2018-05-18 14:14



Inderdaad, het is niet standaard geïnstalleerd in Ubuntu, dus je zou kunnen geven: sudo apt-get install iotop om het te krijgen - Moshe
iotop vereist een kernel hoger dan 2.6.20, wat helaas zowel RedHat el4 als el5 uitsluit. - Dave Cheney
Vanaf RedHat 5.4 zijn de bits die nodig zijn om iotop te laten werken teruggestuurd. Genieten! - Dave Cheney
Het is in Fedora :). - jamie


Zoals gesuggereerd door sastanin in opmerkingen, kunt u rechtstreeks waarden verwerken die worden gegeven in /sys/block/sda/stat of /proc/diskstats. Dit kan handig zijn wanneer geen van de andere genoemde hulpprogramma's beschikbaar is en u ze niet gemakkelijk kunt installeren.

Bijvoorbeeld (IIUC) iets als dit (in bash) zou het aantal keren per seconde moeten aangeven:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Zien https://www.kernel.org/doc/Documentation/iostats.txt en https://www.kernel.org/doc/Documentation/block/stat.txt voor documentatie.


12
2017-07-22 10:16





Je zou eens moeten kijken boven, dat de kracht van iotop / top / iftop op één plaats combineert, en de essentiële onderdelen op uw systeem benadrukt.


5
2018-03-01 04:42





Ik zou aanraden om de tool 'nmon' te bekijken. Het toont u live belasting op een aantal systeemparameters en het opnemen van gegevens in een bestand om later te bekijken. Het is een gratis tool beschikbaar hier:


4
2018-05-18 15:52





om erachter te komen wat uw totale bandbreedte is die u zou kunnen gebruiken hdparm -T /dev/sda om de buffercache (fileio) -prestaties te testen hdparm -t /dev/sda om de leesprestaties van het apparaat te testen

voorbeelden: mijn laptop krijgt 82 MB / sec van de SATA-schijf en 2 GB / sec van de cache. Mijn bureaublad wordt 12 GB / sec verwijderd van de cache en 500 MB / sec van de HW RAID-array. Ik vermoed dat die laatste nummers dubbel zouden kunnen zijn op serverklasse hardware.

lees readahead hoger dan 256, 4096 werkt het beste voor mij

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

keer lezen van 1 GB bij verschillende blokgroottes en verschillende read-aheads


4
2018-05-18 15:58



Welkom bij SF. U kunt codemarkering in uw berichten gebruiken door put-outs tussen strings of inspringende alinea's te plaatsen. - ℝaphink
Twee dingen - 1) --setra is nu -aen 2), de hdparm -{T,t} commando's geven alleen nummerschijven uit, volgens strace, zo zijn niet-destructief. (Standaard disclaimer over advies op internet is van toepassing) - i336_


De standaardtool voor het weergeven van de belasting van de harde schijf is iostat.

Het zal u niet vertellen hoeveel% schijf-bandbreedte u gebruikt, omdat het niet weet hoeveel bandbreedte uw schijf heeft. In elk geval heeft uw schijf alleen het geciteerde cijfer van de fabrikant voor grote overdrachten van aaneengesloten gegevens.


3
2018-05-18 14:02





Ik denk dat RRDtool moet doen wat je wilt hier het gebruikt een daemon om systeemgegevens te dumpen en staat je toe om het te verwerken zoals je wilt. Ik heb het vaak gebruikt om grafieken etc. te maken om de systeembelasting te meten.


2
2018-05-18 14:03