Uživatelské nástroje

Nástroje pro tento web


minitorovaniio

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
minitorovaniio [2013/09/09 12:40] – [Monitorovani IO] djbuldogminitorovaniio [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 ====== Monitorovani IO ====== ====== Monitorovani IO ======
  
-  * kolik CPU/RAM zere jaky proces se zjisti snadno, napriklad vypisem iotop+  * kolik CPU/RAM zere jaky proces se zjisti snadno, napriklad vypisem top
   * monitorovani IO je zlozitejsi a dost casto zpomaluje system nejvic   * monitorovani IO je zlozitejsi a dost casto zpomaluje system nejvic
  
Řádek 10: Řádek 10:
     * dstat (--topio, --topbio)     * dstat (--topio, --topbio)
     * vmstat (-d)     * vmstat (-d)
 +    * iostat
 +    * iozone
 +    * sar
 +
 +===== iostat =====
 +  * využívá hodnoty ze sar
 +  * příklad statistik
 +<code>
 +iostat -d 2
 +Linux 2.6.18-194.3.1.el5 (nejaky.stroj.nekde.cz)        09/05/2014
 +
 +Device:            tps   Blk_read/  Blk_wrtn/  Blk_read   Blk_wrtn
 +sda             558.07       236.28     20370.08 1604053205 138289873008
 +sda1              0.07         0.00         0.36      33698    2429406
 +sda2              0.00         0.00         0.00        621          0
 +sda3              2.51         1.59        37.58   10783682  255133504
 +sda4            555.50       234.68     20332.15 1593234484 138032310098
 +
 +Device:            tps   Blk_read/  Blk_wrtn/  Blk_read   Blk_wrtn
 +sda               0.50         0.00        12.00          0         24
 +sda1              0.00         0.00         0.00          0          0
 +sda2              0.00         0.00         0.00          0          0
 +sda3              0.00         0.00         0.00          0          0
 +sda4              0.50         0.00        12.00          0         24
 +
 +...
 +</code>
 +
 +  * první statistika je myslím průmer za celý den, další výpisy odpovídají už zadanému časovému období
 +
 +===== sar =====
 +  * ukládá statistiky dlouhodobě (období lze specifikovat)
 +  * příklad:
 +<code>
 +# sar -b
 +Linux 2.6.18-194.3.1.el5 (nejakej.stroj.nekde.cz)  09/05/2014
 +
 +12:00:01 AM       tps      rtps      wtps   bread/  bwrtn/s
 +12:10:01 AM    843.15      7.64    835.51    173.54  27131.75
 +12:20:01 AM   1512.20     15.58   1496.62    255.28  33938.05
 +12:30:01 AM   1210.95     11.62   1199.33    183.09  29124.69
 +12:40:01 AM   1069.91      9.31   1060.60    186.96  27125.52
 +12:50:01 AM   1060.24      9.94   1050.30    157.10  25954.69
 +01:00:01 AM   1013.24      7.39   1005.85    113.41  27263.05
 +01:10:01 AM    891.21      7.74    883.47    122.58  25108.18
 +01:20:01 AM    838.14      7.02    831.12    169.31  25711.26
 +..
 +</code>
 +  * výpis obsahuje průměry za 10 minut. Sloupec bread/bwrtn udává, kolik bloků bylo přečteno/zapsáno. 
 +  * Bloky jsou pravdepodobne velikosti 512B, prestoze filesystem pouziva bloky vetsi, typicky 4k.
 +
 +<code>
 + bread/s
 +                     Total amount of data read from the devices in blocks per second.  Blocks are equiv-
 +                     alent to sectors with 2.4 kernels and newer and therefore have a size of 512 bytes.
 +                     With older kernels, a block is of indeterminate size.
 +</code>
 +
 +<code>
 +tune2fs -l /dev/sda4 | grep "Block size"
 +Block size:               4096
 +</code>
  
  
-===== UseCase1 =====+===== UseCase1 (processes read/write old kernel method) =====
  
 Here’s how you use it. First, get it: Here’s how you use it. First, get it:
Řádek 58: Řádek 120:
 </code> </code>
  
-===== UseCase2 =====+===== UseCase2 (process read/write) =====
  
 A quick way is to look at the /proc/[PID]/io file. A quick way is to look at the /proc/[PID]/io file.
Řádek 71: Řádek 133:
 </code> </code>
  
 +==== read/write per process ====
 +
 +<file bash iomon.sh>
 +#!/bin/bash
 +
 +while [ 1 ]
 +do
 +
 +  #CPIDS=`pgrep cache`
 +  CPIDS=`ls /proc/ | grep "[0-9]"`
 +
 +  i=0
 +  for P in $CPIDS
 +  do
 +    STATA[i]=`cat /proc/$P/io 2>/dev/null | grep "^write_bytes:" | cut -d " " -f 2`
 +    i=$((i+1))
 +  done
 + 
 +  sleep 1
 + 
 +  i=0
 +  for P in $CPIDS
 +  do
 +    STATB[i]=`cat /proc/$P/io 2>/dev/null | grep "^write_bytes:" | cut -d " " -f 2`
 +    i=$((i+1))
 +  done
 + 
 +  i=0
 +  for P in $CPIDS
 +  do
 +    [[ ${STATB[$i]} -gt 0 ]] && [[ ${STATA[$i]} -gt 0 ]] && DIFF=$(( ${STATB[$i]} - ${STATA[$i]}  )) || DIFF=0
 +    [[ $DIFF -gt 0 ]] && {
 +      DIFF=$((DIFF/1024))
 +      echo "PID $P: $DIFF kB/s (${STATB[$i]} - ${STATA[$i]})"
 +      echo -e "PID $P:\t\t$DIFF kB/s\t\t\t$(cat /proc/$P/cmdline | cut -c1-30)"
 +    }
 +    i=$((i+1))
 +  done
 + 
 +  echo "---" 
 +
 +done
 +</file>
 +===== UseCase3 (high IO waiting) =====
 +  
 +<code>
 +   wa -- iowait (Amount of time the CPU has been waiting for I/O to complete)
 +</code>
 +
 +  * procesy ve stavu D
 +<code>
 +PROCESS STATE CODES
 + D uninterruptible sleep (usually IO)
 + R running or runnable (on run queue)
 + S interruptible sleep (waiting for an event to complete)
 + T stopped, either by a job control signal or because it is being traced.
 + W paging (not valid since the 2.6.xx kernel)
 + X dead (should never be seen)
 + Z defunct ("zombie") process, terminated but not reaped by its parent.
 +</code>
 +
 +  * vypis procesu ve stavu D
 +<code>
 + for x in `seq 1 1 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done
 +</code>
 +
 +  * zdroj (http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux)
minitorovaniio.1378723216.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki