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:37] – [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 8: Řádek 8:
     * atop     * atop
     * pidstat     * pidstat
-    * dstat (topio, topbio)+    * dstat (--topio, --topbio) 
 +    * 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/
 +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/
 +                     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 57: Řá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 70: Řá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.1378723078.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki