Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2783 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  ioview et netview pour mesurer les débits DD et net sous Linux (v1.04)

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

ioview et netview pour mesurer les débits DD et net sous Linux (v1.04)

n°915483
maxxximato​ze
Posté le 23-05-2007 à 18:19:27  profilanswer
 

Ci-dessous deux scripts GPL sans prétention aucune qui vous permettrons de monitorer en temps réel les IOs et les débits en lecture et écriture de votre disque dur ainsi que les debits réseau. Si ça vous plait (ou pas d'ailleur) ou si vous avez des commentaires ou idées pour améliorer la chose, ne vous genez pas.

 

Testés sur ubuntu 6.06, 8.04, 9.04, 9.10, opensuse 10, 11, 11.1, sles 10sp2 et 11, fedora 9 et plus, ils sont maintenant configurables au niveau du délai de rafraichissement et beaucoup plus précis grâce à un système de compensation du temps d'exécution et une priorité accrue, ainsi qu'un contrôle de dépassement de la compensation pour garantir la précision de la mesure. Capablent de mesurer de très gros débits grâce au changement automatique des unités à l'affichage, je m'en sert lors d'installation de gros sytèmes de virtualisation pour aider troubleshooter les problèmes d'io. Redoutable.

 

PS: ne pas oublier de copier les scripts dans /usr/sbin et de les passer en exécutable...

 

Edit: maj du script en 0.2
Edit: maj du script en 0.4
Edit: Ajout de netview 0.2
Edit: maj de ioviex en 0.6
Edit: maj de netview en 0.6
Edit: maj de ioview et netview en 0.8
Edit: maj de ioview et netview en 0.9
Edit: maj de ioview et netview en 0.95
Edit: maj de ioview et netview en 0.97
Edit: maj de ioview et netview en 0.99
Edit: maj de ioview et netview en 0.9999
Edit: Enfin la v1.0 !
Edit: maj de ioview et netview en 1.01
Edit: maj de ioview et netview en 1.02
Edit: maj de ioview et netview en 1.04

 

ci-dessous ce que ca donne à l'écran (si tout va bien) sur une carte adaptec 5085 en lecture séquentielle et un bond en mode 0 de deux carte intel 10GE (bridées car sur port pcie 4X au lieu de 8), et oui oui les chiffres sont bons.

 

pour ioview


Real time statistics for sdc (refreshed every 3 sec)

 

Reads per second:         6244.33r/s
Average read size:        256.0KiB/s
Merged reads per second:  0r/s
Read throughput:          1.524GiB/s

 

Writes per second:        2.66w/s
Average write size:       6.6KiB/s
Merged writes per second: .66w/s
Write throughput:         17.6KiB/s

 

Total reads:              624012
Total average read size:  252.6KiB
Total merged reads:       5210
Total data read:          157656278KiB 153961.20MiB 150.352GiB .1468TiB

 

Total writes:             335485
Total average write size: 27.4KiB
Total merged writes:      936940
Total data written:       9197405KiB 8981.84MiB 8.771GiB .0085TiB


et pour netview


Real time statistics for bond1 (refreshed every 3 sec)

 

Link encap:Ethernet  HWaddr 00:1B:21:2C:28:D4
inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
RX packets:184691251 errors:0 dropped:0 overruns:0 frame:0
TX packets:208073052 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:239703181513 (228598.7MiB)  TX bytes:277194877850 (264353.6MiB)

 

RX packets per second:  927145.00pkt/s
RX average packet size: 1513.94bytes/pkt
RX throughput:          11.229Gb/s (1.307GiB/s)

 

TX packets per second:  123557.00pkt/s
TX average packet size: 54.00bytes/pkt
TX throughput:          53.38Mb/s (6.36MiB/s)

 

Ci dessous ioview:

 


#!/bin/bash
# Author: Maxime Pierron
#
# /usr/sbin/ioview
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 

ramfs="/tmpramfs"

 

function usage()
{
 echo "ioview v1.04 by Maxime Pierron, 2007, 2008, 2009."
 echo "On screen real time block device utilization rate,"
 echo "a 2.6.x linux kernel is required."
 echo "Usage: ioview "time_in_sec" "device_name" (ex: ioview 1 sda),"
 echo "use "time_in_sec" to specify the refresh interval,"
 echo "(default: 3s, 0 to display only once),"
 echo "press ctrl+C to stop ioview."
}
function float_cond()
{
    local cond=0
    if [ $# -gt 0 ]; then
        cond=$(echo "$*"|bc 2>/dev/null -q 2>/dev/null)
        if [ -z "$cond" ]; then cond=0; fi
        if [[ "$cond" != 0  &&  "$cond" != 1 ]]; then cond=0; fi
    fi
    local stat=$((cond == 0))
    return $stat
}
if [ -z $1 ]; then
 usage
 exit 0
fi
if [ -z $(find /usr/bin/ -name awk|sed 's;/usr/bin/;;g') ]; then echo "awk is missing, you have to install it."; exit 1; fi
if [ -z $(find /usr/bin/ -name bc|sed 's;/usr/bin/;;g') ]; then echo "bc is missing, you have to install it."; exit 1; fi
oneshot="emtpy"
if [ ! -z $2 ]; then
 if [ $1 -eq 0 ]; then
  rr=1
  dsk=$2
  oneshot="true"
 else
  if [ $1 -ge 1 ]; then
   rr=$1
   dsk=$2
  else
   usage
   echo "You must enter an integer."
   exit 1
  fi
 fi
else
 rr=3
 dsk=$1
fi
device=$(awk '/'" $dsk "'/ {print $3}' /proc/diskstats)
if [ ! -z $device ]; then
 device=$(awk '/'" $dsk "'/ {print $8}' /proc/diskstats)
 if [ -z $device ]; then
  usage
  echo $dsk "is not a usable block device."
  exit 1
 fi
else
 usage
 echo $dsk "not found."
 exit 1
fi
pid=$$
renice -19 $pid > /dev/null 2>&1
if [ ! -d $ramfs ]; then
 mkdir $ramfs
fi
if [ -z $(mount|grep "$ramfs"|sed -n "1{p;q;}"|awk '{print $1}') ]; then
 mount -t tmpfs -o size=4M, tmpfs $ramfs > /dev/null 2>&1
fi
diskstats=$(ls $ramfs|grep diskstats.); for i in $diskstats; do pidlock=$(echo $i|cut -d"." -f2); if [ -z $(pidstat -p $pidlock 2>/dev/null|awk '{print $2}'|grep $pidlock) ]; then rm -f $ramfs/$i; fi; done
cat /proc/diskstats > $ramfs/diskstats.$pid
read read0 mergedread0 readsector0 write0 mergedwrite0 writesector0 <<< $(awk '{print $4,$5,$6,$8,$9,$10}' <<< $(awk '/'" $dsk "'/' $ramfs/diskstats.$pid 2>/dev/null))
unit1="r/s"
unit2="w/s"
unit3="KiB/s"
unit4="KiB"
unit5="MiB"
unit6="GiB"
unit7="TiB"
message="refreshed every $rr sec"
while [ 1 ]; do
 date0=$(date +%s.%N)
 cat /proc/diskstats > $ramfs/diskstats.$pid
 read1=$read0
 mergedread1=$mergedread0
 readsector1=$readsector0
 write1=$write0
 mergedwrite1=$mergedwrite0
 writesector1=$writesector0
 read read0 mergedread0 readsector0 write0 mergedwrite0 writesector0 <<< $(awk '{print $4,$5,$6,$8,$9,$10}' <<< $(awk '/'" $dsk "'/' $ramfs/diskstats.$pid 2>/dev/null))
 reads=$(echo "scale=2; ($read0-$read1)/$rr"|bc 2>/dev/null)
 mergedreads=$(echo "scale=2; ($mergedread0-$mergedread1)/$rr"|bc 2>/dev/null)
 readkB=$(echo "scale=2; ($readsector0-$readsector1)*512/1024"|bc 2>/dev/null)
 if float_cond $reads '>' 0; then
  avgreadsz=$(echo "scale=1; $readkB/$reads/$rr"|bc 2>/dev/null)
 else
  avgreadsz=0
 fi
 readspeed=$(echo "scale=1; $readkB/$rr"|bc 2>/dev/null)
 readspeedunit="KiB/s"
 if float_cond $readspeed '>=' 1024; then
  readspeed=$(echo "scale=2; $readkB/1024/$rr"|bc 2>/dev/null)
  readspeedunit="MiB/s"
  if float_cond $readspeed '>=' 1024; then
   readspeed=$(echo "scale=3; $readkB/1048576/$rr"|bc 2>/dev/null)
   readspeedunit="GiB/s"
  fi
 fi
 datareadk=$[$readsector0*512/1024]
 totavgreadsz=$(echo "scale=1; $datareadk/$read0"|bc 2>/dev/null)
 if [ -z $totavgreadsz ]; then totavgreadsz=0; fi
 datareadm=$(echo "scale=2; $datareadk/1024"|bc 2>/dev/null)
 datareadg=$(echo "scale=3; $datareadm/1024"|bc 2>/dev/null)
 datareadt=$(echo "scale=4; $datareadg/1024"|bc 2>/dev/null)
 writes=$(echo "scale=2; ($write0-$write1)/$rr"|bc 2>/dev/null)
 mergedwrites=$(echo "scale=2; ($mergedwrite0-$mergedwrite1)/$rr"|bc 2>/dev/null)
 writekB=$(echo "scale=2; ($writesector0-$writesector1)*512/1024"|bc 2>/dev/null)
 if float_cond $writes '>' 0; then
  avgwritesz=$(echo "scale=1; $writekB/$writes/$rr"|bc 2>/dev/null)
 else
  avgwritesz=0
 fi
 writespeed=$(echo "scale=1; $writekB/$rr"|bc 2>/dev/null)
 writespeedunit="KiB/s"
 if float_cond $writespeed '>=' 1024; then
  writespeed=$(echo "scale=2; $writekB/1024/$rr"|bc 2>/dev/null)
  writespeedunit="MiB/s"
  if float_cond $writespeed '>=' 1024; then
   writespeed=$(echo "scale=3; $writekB/1048576/$rr"|bc 2>/dev/null)
   writespeedunit="GiB/s"
  fi
 fi
 datawritek=$[$writesector0*512/1024]
 totavgwritesz=$(echo "scale=1; $datawritek/$write0"|bc 2>/dev/null)
 if [ -z $totavgwritesz ]; then totavgwritesz=0; fi
 datawritem=$(echo "scale=2; $datawritek/1024"|bc 2>/dev/null)
 datawriteg=$(echo "scale=3; $datawritem/1024"|bc 2>/dev/null)
 datawritet=$(echo "scale=4; $datawriteg/1024"|bc 2>/dev/null)
 if [ $oneshot = "true" ];then
  message="displayed only once"
  oneshot="false"
 else
  clear
  echo "Real time statistics for $dsk ($message)"
  echo ""
  echo "Reads per second:_$reads$unit1"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Average read size:_$avgreadsz$unit3"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Merged reads per second:_$mergedreads$unit1"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Read throughput:_$readspeed$readspeedunit"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo ""
  echo "Writes per second:_$writes$unit2"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Average write size:_$avgwritesz$unit3"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Merged writes per second:_$mergedwrites$unit2"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Write throughput:_$writespeed$writespeedunit"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo ""
  echo "Total reads:_$read0"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Total average read size:_$totavgreadsz$unit4"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Total merged reads:_$mergedread0"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Total data read:_$datareadk$unit4 $datareadm$unit5 $datareadg$unit6 $datareadt$unit7"|awk -F"_" '{printf("%-25s %-1s %-1s %-1s \n", $1, $2, $3, $4)}'
  echo ""
  echo "Total writes:_$write0"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Total average write size:_$totavgwritesz$unit4"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Total merged writes:_$mergedwrite0"|awk -F"_" '{printf("%-25s %-1s \n", $1, $2)}'
  echo "Total data written:_$datawritek$unit4 $datawritem$unit5 $datawriteg$unit6 $datawritet$unit7"|awk -F"_" '{printf("%-25s %-1s %-1s %-1s \n", $1, $2, $3, $4)}'
  if [ $oneshot = "false" ];then exit 0; fi
 fi
 date1=$(date +%s.%N)
 offset=$(echo "scale=6; $date1-$date0"|bc 2>/dev/null)
 sleeptime=$(echo "scale=6; $rr-($offset*1.11)"|bc 2>/dev/null)
 if float_cond $sleeptime '<=' 0; then
  sleeptime=0.001
  echo "WARNING: Results are not accurate due to too high system load."
 fi
 sleep $sleeptime 2> /dev/null
done

 

Et ci dessous netview:

 


#!/bin/bash
# Author: Maxime Pierron
#
# /usr/sbin/netview
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 

ramfs="/tmpramfs"

 

function usage()
{
 echo "netview v1.04 by Maxime Pierron, 2007, 2008, 2009."
 echo "On screen real time net device utilization rate,"
 echo "a 2.6.x linux kernel is required."
 echo "Usage: netview "time_in_sec" "device_name" (ex: netview 1 eth0),"
 echo "use "time_in_sec" to specify the refresh interval,"
 echo "(default: 3s, 0 to display only once),"
 echo "press ctrl+C to stop netview."
}
function float_cond()
{
    local cond=0
    if [ $# -gt 0 ]; then
        cond=$(echo "$*"|bc 2>/dev/null -q 2>/dev/null)
        if [ -z "$cond" ]; then cond=0; fi
        if [[ "$cond" != 0  &&  "$cond" != 1 ]]; then cond=0; fi
    fi
    local stat=$((cond == 0))
    return $stat
}
if [ -z $1 ]; then
 usage
 exit 0
fi
if [ -z $(find /usr/bin/ -name awk|sed 's;/usr/bin/;;g') ]; then echo "awk is missing, you have to install it."; exit 1; fi
if [ -z $(find /usr/bin/ -name bc|sed 's;/usr/bin/;;g') ]; then echo "bc is missing, you have to install it."; exit 1; fi
oneshot="emtpy"
if [ ! -z $2 ]; then
 if [ $1 -eq 0 ]; then
  rr=1
  iface=$2
  oneshot="true"
 else
  if [ $1 -ge 1 ]; then
   rr=$1
   iface=$2
  else
   usage
   echo "You must enter an integer."
   exit 1
  fi
 fi
else
 rr=3
 iface=$1
fi
device=$(grep -w $iface /proc/net/dev|cut -d ":" -f1)
if [ -z $device ]; then
 usage
 echo $iface "not found."
 exit 1
fi
pid=$$
renice -19 $pid > /dev/null 2>&1
if [ ! -d $ramfs ]; then
 mkdir $ramfs
fi
if [ -z $(mount|grep "$ramfs"|sed -n "1{p;q;}"|awk '{print $1}') ]; then
 mount -t tmpfs -o size=4M, tmpfs $ramfs > /dev/null 2>&1
fi
netdev=$(ls $ramfs|grep netdev.); for i in $netdev; do pidlock=$(echo $i|cut -d"." -f2); if [ -z $(pidstat -p $pidlock 2>/dev/null|awk '{print $2}'|grep $pidlock) ]; then rm -f $ramfs/$i; fi; done
cat /proc/net/dev > $ramfs/netdev.$pid
read rxbytes0 rxpackets0 txbytes0 txpackets0 <<< $(awk '{print $1,$2,$9,$10}' <<< $(grep $iface $ramfs/netdev.$pid 2>/dev/null|cut -d":" -f2))
pkts="pkt/s"
bytes="bytes/pkt"
message="refreshed every $rr sec"
while [ 1 ]; do
 date0=$(date +%s.%N)
 cat /proc/net/dev > $ramfs/netdev.$pid
 rxbytes1=$rxbytes0
 rxpackets1=$rxpackets0
 txbytes1=$txbytes0
 txpackets1=$txpackets0
 read rxbytes0 rxpackets0 txbytes0 txpackets0 <<< $(awk '{print $1,$2,$9,$10}' <<< $(grep $iface $ramfs/netdev.$pid 2>/dev/null|cut -d":" -f2))
 rxpackets=$(echo "scale=2; ($rxpackets0-$rxpackets1)/$rr"|bc 2>/dev/null)
 rxbytes=$(echo "scale=2; ($rxbytes0-$rxbytes1)/$rr"|bc 2>/dev/null)
 if float_cond $rxpackets '>' 0; then
  avgrxsz=$(echo "scale=2; $rxbytes/$rxpackets"|bc 2>/dev/null)
 else
  avgrxsz=0
 fi
 rxkbits=$(echo "scale=1; $rxbytes*8/1000"|bc 2>/dev/null)
 rxkbspeed=$rxkbits
 rxkbspeedunit="Kb/s"
 if float_cond $rxkbspeed '>=' 1000; then
  rxkbspeed=$(echo "scale=2; $rxkbits/1000"|bc 2>/dev/null)
  rxkbspeedunit="Mb/s"
  if float_cond $rxkbspeed '>=' 1000; then
   rxkbspeed=$(echo "scale=3; $rxkbits/1000000"|bc 2>/dev/null)
   rxkbspeedunit="Gb/s"
  fi
 fi
 rxkbytes=$(echo "scale=1; $rxbytes/1024"|bc 2>/dev/null)
 rxkBspeed=$rxkbytes
 rxkBspeedunit="KiB/s"
 if float_cond $rxkBspeed '>=' 1024; then
  rxkBspeed=$(echo "scale=2; $rxkbytes/1024"|bc 2>/dev/null)
  rxkBspeedunit="MiB/s"
  if float_cond $rxkBspeed '>=' 1024; then
   rxkBspeed=$(echo "scale=3; $rxkbytes/1048576"|bc 2>/dev/null)
   rxkBspeedunit="GiB/s"
  fi
 fi
 txpackets=$(echo "scale=2; ($txpackets0-$txpackets1)/$rr"|bc 2>/dev/null)
 txbytes=$(echo "scale=2; ($txbytes0-$txbytes1)/$rr"|bc 2>/dev/null)
 if float_cond $txpackets '>' 0; then
  avgtxsz=$(echo "scale=2; $txbytes/$txpackets"|bc 2>/dev/null)
 else
  avgtxsz=0
 fi
 txkbits=$(echo "scale=1; $txbytes*8/1000"|bc 2>/dev/null)
 txkbspeed=$txkbits
 txkbspeedunit="Kb/s"
 if float_cond $txkbspeed '>=' 1000; then
  txkbspeed=$(echo "scale=2; $txkbits/1000"|bc 2>/dev/null)
  txkbspeedunit="Mb/s"
  if float_cond $txkbspeed '>=' 1000; then
   txkbspeed=$(echo "scale=3; $txkbits/1000000"|bc 2>/dev/null)
   txkbspeedunit="Gb/s"
  fi
 fi
 txkbytes=$(echo "scale=1; $txbytes/1024"|bc 2>/dev/null)
 txkBspeed=$txkbytes
 txkBspeedunit="KiB/s"
 if float_cond $txkBspeed '>=' 1024; then
  txkBspeed=$(echo "scale=2; $txkbytes/1024"|bc 2>/dev/null)
  txkBspeedunit="MiB/s"
  if float_cond $txkBspeed '>=' 1024; then
   txkBspeed=$(echo "scale=3; $txkbytes/1048576"|bc 2>/dev/null)
   txkBspeedunit="GiB/s"
  fi
 fi
 if [ $oneshot = "true" ];then
  message="displayed only once"
  oneshot="false"
 else
  clear
  echo "Real time statistics for $iface ($message)"
  echo ""
  ifconfig $iface 2>/dev/null|grep $iface|sed 's/^'$iface'[ ]\+//'
  ifconfig $iface 2>/dev/null|grep -v $iface|sed 's/^\s*//'|sed  's/ Kb)/KiB)/g'|sed  's/ Mb)/MiB)/g'|sed  's/ Gb)/GiB)/g'|sed  's/ Tb)/TiB)/g'|sed  's/ KB)/KiB)/g'|sed  's/ MB)/MiB)/g'|sed  's/ GB)/GiB)/g'|sed  's/ TB)/TiB)/g'
  echo "RX packets per second:_$rxpackets$pkts"|awk -F"_" '{printf("%-23s %-1s \n", $1, $2)}'
  echo "RX average packet size:_$avgrxsz$bytes"|awk -F"_" '{printf("%-23s %-1s \n", $1, $2)}'
  echo "RX throughput:_$rxkbspeed$rxkbspeedunit ($rxkBspeed$rxkBspeedunit)"|awk -F"_" '{printf("%-23s %-1s \n", $1, $2)}'
  echo ""
  echo "TX packets per second:_$txpackets$pkts"|awk -F"_" '{printf("%-23s %-1s \n", $1, $2)}'
  echo "TX average packet size:_$avgtxsz$bytes"|awk -F"_" '{printf("%-23s %-1s \n", $1, $2)}'
  echo "TX throughput:_$txkbspeed$txkbspeedunit ($txkBspeed$txkBspeedunit)"|awk -F"_" '{printf("%-23s %-1s \n", $1, $2)}'
  if [ $oneshot = "false" ];then exit 0; fi
 fi
 date1=$(date +%s.%N)
 offset=$(echo "scale=6; $date1-$date0"|bc 2>/dev/null)
 sleeptime=$(echo "scale=6; $rr-($offset*1.15)"|bc 2>/dev/null)
 if float_cond $sleeptime '<=' 0; then
  sleeptime=0.001
  echo "WARNING: Results are not accurate due to too high system load."
 fi
 sleep $sleeptime 2> /dev/null
done


Message édité par maxxximatoze le 21-12-2009 à 15:32:51
mood
Publicité
Posté le 23-05-2007 à 18:19:27  profilanswer
 

n°915848
krifur
Posté le 24-05-2007 à 17:41:51  profilanswer
 

personne pour tester :o ?

n°915856
maxxximato​ze
Posté le 24-05-2007 à 17:50:43  profilanswer
 

krifur a écrit :

personne pour tester :o ?


 
Apparemment, pas grand monde. Pour sur, moi j'ai testé puisque je l'ai conçu, et je le trouve bien, mais je ne suis pas objectif...

n°915859
krifur
Posté le 24-05-2007 à 18:01:44  profilanswer
 

je suis en train de tester, pas tres pratique le rafraichissement :o, sinon ca a l'air instructif (mais pour l'instant difficilement analysable)

n°915863
maxxximato​ze
Posté le 24-05-2007 à 18:37:28  profilanswer
 

krifur a écrit :

je suis en train de tester, pas tres pratique le rafraichissement :o, sinon ca a l'air instructif (mais pour l'instant difficilement analysable)


 
Pas très pratique dans quel sens ? Je pensais justement modifier l'affichage sous forme de plusieurs colonnes et des lignes qui s'affichent les unes en dessous des autres avec un rappel des titres des colonnes toutes les 5 ou 10 lignes comme le fait netapp avec le sysstat. Je trouve ca pas mal et plus facilement exploitable pour réutiliser la sortie pour faire des stats ou des graphs. A voir.

n°915995
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 25-05-2007 à 11:58:51  profilanswer
 

drapeau :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°916000
Fork Bomb
Obsédé textuel
Posté le 25-05-2007 à 12:15:36  profilanswer
 

Le raffraichissemnt toutes les secondes est trop rapide, j'ai pas le temps de lire (ce qui est le but d eton script).
Mets un raffraichissement des infos toutes 5 ou 10 secondes, ça devrait être bon.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°916006
steph1066
Posté le 25-05-2007 à 12:56:56  profilanswer
 

Juste pour info, ça ne marche pas chez moi Fedora core 6
 
/io.sh sdb3
sdb3 not found
 
mais si je fais:
[root@wrndfruc2411 proc]# cat diskstats |grep sdb3
   8   19 sdb3 52906 1319226 66230 529840
 
Par contre si je fais ça:
[root@wrndfruc2411 proc]# cat diskstats |grep sdb3
   8   19 sdb3 52906 1319226 66230 529840
[root@wrndfruc2411 proc]# cat diskstats |grep sdb3 |cut -d " " -f16
 
[root@wrndfruc2411 proc]#              

n°916197
krifur
Posté le 26-05-2007 à 01:22:47  profilanswer
 

Ptet parque tu essayes d'utiliser le script sur une partoche or ce script analyse les io d'un disque donc /io.sh sdb devrait le faire...

n°916842
enfoiro
a nickname is just a nickname
Posté le 28-05-2007 à 16:53:03  profilanswer
 

drapal

mood
Publicité
Posté le 28-05-2007 à 16:53:03  profilanswer
 

n°916930
maxxximato​ze
Posté le 28-05-2007 à 21:47:58  profilanswer
 

Fork Bomb a écrit :

Le raffraichissemnt toutes les secondes est trop rapide, j'ai pas le temps de lire (ce qui est le but d eton script).
Mets un raffraichissement des infos toutes 5 ou 10 secondes, ça devrait être bon.


 
Je penses que je vais ajouter un argument pour configurer l'interval d'affichage. Sinon est-ce que la présentation des infos vous parait claire lisible ?


Message édité par maxxximatoze le 07-10-2008 à 17:24:08
n°917039
steph1066
Posté le 29-05-2007 à 10:32:12  profilanswer
 

krifur a écrit :

Ptet parque tu essayes d'utiliser le script sur une partoche or ce script analyse les io d'un disque donc /io.sh sdb devrait le faire...


 
effectivement  ;)

n°929492
maxxximato​ze
Posté le 02-07-2007 à 20:27:12  profilanswer
 

Pas bcp de retours...

n°929766
enfoiro
a nickname is just a nickname
Posté le 03-07-2007 à 14:06:50  profilanswer
 

commentaire de forme, pourrais tu mettre ton script dans un [ fixed] [ /fixed] ca rendrait la lecture + facile.

n°1020074
maxxximato​ze
Posté le 10-03-2008 à 16:15:44  profilanswer
 

enfoiro a écrit :

commentaire de forme, pourrais tu mettre ton script dans un [ fixed] [ /fixed] ca rendrait la lecture + facile.


 
C'est fait, j'ai juste mi un peu plus de 6 mois pour le faire...

n°1020078
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 10-03-2008 à 16:18:19  profilanswer
 

apt-get install iftop


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1020080
maxxximato​ze
Posté le 10-03-2008 à 16:21:28  profilanswer
 

black_lord a écrit :

apt-get install iftop


 
iftop est surement tres bien, meme surement meilleur. Mais je préfère utiliser mon script...

n°1079573
maxxximato​ze
Posté le 07-10-2008 à 15:04:48  profilanswer
 

J'espère que les nouvelles versions vont vous plaire et qu'elles vous seront utile. N'hésitez pas à faire un retour sur le forum...

n°1079896
maxxximato​ze
Posté le 08-10-2008 à 11:52:03  profilanswer
 

Personne pour tester ???

n°1079898
zecrazytux
Posté le 08-10-2008 à 11:55:23  profilanswer
 

j'ai ni bash ni /proc sur mes serveurs


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1079904
maxxximato​ze
Posté le 08-10-2008 à 12:18:07  profilanswer
 

zecrazytux a écrit :

j'ai ni bash ni /proc sur mes serveurs


 
C'est sur que ca aide pas pour tester le bouzin...

n°1080439
maxxximato​ze
Posté le 09-10-2008 à 18:06:47  profilanswer
 

Pas bcp de retours... [:alina95]

n°1082430
maxxximato​ze
Posté le 17-10-2008 à 16:09:05  profilanswer
 

Nouvelle version 0.97 avec une petite modification de l'affichage, normalement un peu plus clair.


Message édité par maxxximatoze le 17-10-2008 à 16:09:15
n°1082458
matafan
Posté le 17-10-2008 à 18:51:04  profilanswer
 

J'aime pas trop ton mélange de [], [[]] et test. Tu devrais essayer d'être consistant. J'aime pas non plus tes cat qui ne servent à rien (cat machin | awk ...). J'aime pas les grep inutiles devant les awk. J'aime pas ta facon de traiter 15 fois le même fichier en entier, pour extraire 15 informations de ce fichier.
 
Sinon ça a l'air assez propre, et ça j'aime bien.
 
Mais j'ai pas testé.

Message cité 1 fois
Message édité par matafan le 17-10-2008 à 18:52:29
n°1082816
maxxximato​ze
Posté le 19-10-2008 à 16:48:58  profilanswer
 

matafan a écrit :

J'aime pas trop ton mélange de [], [[]] et test. Tu devrais essayer d'être consistant. J'aime pas non plus tes cat qui ne servent à rien (cat machin | awk ...). J'aime pas les grep inutiles devant les awk. J'aime pas ta facon de traiter 15 fois le même fichier en entier, pour extraire 15 informations de ce fichier.
 
Sinon ça a l'air assez propre, et ça j'aime bien.
 
Mais j'ai pas testé.


 
Ah, très bien, enfin un commentaire. Mais bon c'est pas très constructif. Donne des exemples illustrés par des bouts de code, des pistes d'amélioration. Je n'ai pas la prétention de dire que ces scripts sont parfaits, loin s'en faut, c'est d'ailleurs pour cela qu'il sont sur le forum, pour que je puisse progresser, apprendre de nouvelles choses. Donc j'apprécierai grandement que tu m'éclaire de t'es lumières, qui m'ont l'air somme toutes lumineuses ;)


Message édité par maxxximatoze le 20-10-2008 à 00:19:52
n°1082956
matafan
Posté le 20-10-2008 à 12:41:06  profilanswer
 

Bon alors, vu que tu m'as pas l'air d'avoir envie de chercher :
 
Si j'étais toi je mettrais des [[]] partout pour remplacer les [] et les "test".
 
cat machin | awk 'bidule' -> awk 'bidule' machin
grep machin truc | awk 'bidule' -> awk '/machin/ bidule' truc
 
Par exemple je remplacerai ça :

cat /proc/diskstats > $ramdisk/diskstats.$pid
read0=$(cat $ramdisk/diskstats.$pid|grep " $dsk "|awk '{print $4}')
mergedread0=$(cat $ramdisk/diskstats.$pid|grep " $dsk "|awk '{print $5}')
readsector0=$(cat $ramdisk/diskstats.$pid|grep " $dsk "|awk '{print $6}')
write0=$(cat $ramdisk/diskstats.$pid|grep " $dsk "|awk '{print $8}')
mergedwrite0=$(cat $ramdisk/diskstats.$pid|grep " $dsk "|awk '{print $9}')
writesector0=$(cat $ramdisk/diskstats.$pid|grep " $dsk "|awk '{print $10}')


Par ça :

awk '/'"$dsk"'/ { print $4 $5 $6 $8 $9 $10 }' /proc/diskstats | read read0 mergedread0 readsector0 write0 mergedwrite0 writesector0


Edit : j'avais oublié le nom de fichier


Message édité par matafan le 20-10-2008 à 16:29:05
n°1083045
zecrazytux
Posté le 20-10-2008 à 15:50:09  profilanswer
 

:love: ton exemple, matafan :)


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1083059
maxxximato​ze
Posté le 20-10-2008 à 16:16:05  profilanswer
 

j'ai testé en mettant les lignes ci desous dans un script, mais le echo ne sort rien et pourtant le awk marche nikel, c'est le read qui n'a pas l'air de vouloir le faire. Bizarre.
 
awk '/'" sda "'/ {print $4 $5 $6 $8 $9 $10}' /proc/diskstats|read read0 mergedread0 readsector0 write0 mergedwrite0 writesector0
echo $read0 $mergedread0 $readsector0 $write0 $mergedwrite0 $writesector0


Message édité par maxxximatoze le 20-10-2008 à 18:20:20
n°1083111
maxxximato​ze
Posté le 20-10-2008 à 18:32:46  profilanswer
 

Pas moyen de le faire fonctionner pour le moment, rien à faire ca coince.

n°1083141
matafan
Posté le 20-10-2008 à 21:59:56  profilanswer
 

C'est parce qu'il manque des virgules, awk colle les champs les uns aux autres : print $4, $5, $6, $8, $9, $10

n°1083207
maxxximato​ze
Posté le 21-10-2008 à 10:24:02  profilanswer
 

matafan a écrit :

C'est parce qu'il manque des virgules, awk colle les champs les uns aux autres : print $4, $5, $6, $8, $9, $10


 
J'avais testé avec print $4" "$5" "$6" "$8" "$9" "$10 et le résultat est le même, read n'a pas l'air de récupérer quoi que se soit.
 
voila ce que donne la ligne avec les virgules:
 


suse1:~ # awk '/'" sda "'/ { print $4, $5, $6, $8, $9, $10 }' /proc/diskstats
2671733 2137546 601721333 4257005 14525382 767686058


 
Une fois le read ajouté et un echo ligne suivante dans un script de test, les variables restent désespérément vides. Bizarre bizarre.

n°1083212
matafan
Posté le 21-10-2008 à 10:36:46  profilanswer
 

En fait c'est normal, c'est parce que le read s'exécute dans un sous-shell (parce qu'il est à droite d'un pipe). Donc les variables sont assignées dans le sous-shell, ce qui ne modifie évidement pas les variables dans le shell père. Y'a moyen de contourner ça mais bon, ça compique un peu.

n°1083345
maxxximato​ze
Posté le 21-10-2008 à 18:44:18  profilanswer
 

matafan a écrit :

En fait c'est normal, c'est parce que le read s'exécute dans un sous-shell (parce qu'il est à droite d'un pipe). Donc les variables sont assignées dans le sous-shell, ce qui ne modifie évidement pas les variables dans le shell père. Y'a moyen de contourner ça mais bon, ça compique un peu.


 
Comment je peux faire alors pour recupérer toutes mes variables en une ligne ? Maintenant tu m'as mis l'eau à la bouche, et même en bricolant le truc dans tous les sens pas moyen d'arriver à mes fins, je sèche complet.

n°1083373
matafan
Posté le 21-10-2008 à 23:35:19  profilanswer
 

Une solution qui complique un peu l'écriture, c'est de grouper tout le code qui utilise ces variables dans un bloc à droite du pipe :

echo ... | { read ...;
command1;
command2;
...
}


Une autre solution c'est d'utiliser un tableau plutôt n variables.


Message édité par matafan le 21-10-2008 à 23:35:33
n°1085840
maxxximato​ze
Posté le 29-10-2008 à 22:36:02  profilanswer
 

Encore une petite maj pour fixer des bricoles et améliorer la lisibilité de l'affichage. J'ai aussi viré les couleurs qui ne servaient à rien. Désolé matafan, j'ai pas réussi à faire de façon simple ce dont on parlait au dessus, peut être plus tard...
 
J'ai ajouté une petite chose supplémentaire, l'affichage unique si on entre 0 comme valeur.


Message édité par maxxximatoze le 30-10-2008 à 10:55:13
n°1106257
maxxximato​ze
Posté le 21-01-2009 à 19:07:50  profilanswer
 

N'hésitez surtout pas à tester la nouvelle version des deux scripts (normalement définitive) et faire des retours sur le forum, surtout au niveau de la précision des mesures, normalement c'est très fiable mais bon on sait jamais. Merci d'avance aux testeurs.


Message édité par maxxximatoze le 21-01-2009 à 19:09:04
n°1106434
maxxximato​ze
Posté le 22-01-2009 à 11:12:21  profilanswer
 

Pour info, l'erreur de mesure devrait être d'environ 0.1% à 1s et de moins en moins au fur et à mesure que l'on augmente le temps de rafraichissement.

n°1112764
maxxximato​ze
Posté le 13-02-2009 à 13:49:52  profilanswer
 

Voici enfin la v1.0, pour ceux qui veulent tester.

n°1112804
thana54
made in concept
Posté le 13-02-2009 à 15:00:34  profilanswer
 

Intéressant, je ne me suis jamais trop penché sur les débits hors ceux de lecture avec hdparm.

n°1112865
maxxximato​ze
Posté le 13-02-2009 à 17:08:05  profilanswer
 

thana54 a écrit :

Intéressant, je ne me suis jamais trop penché sur les débits hors ceux de lecture avec hdparm.


 
Si tu veux voir ce que ca donne avec ioview je te conseil plutot dd avec un truc du genre dd if=/dev/sda of=/dev/zero bs=1M iflag=direct et sur une 2e console tu lances ioview avec le rafraichissement de ton choix. Ca c'est pour la vitesse séquentielle du disque, après pour l'aléatoire je te recommande d'utiliser iometer pour générer la charge.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  ioview et netview pour mesurer les débits DD et net sous Linux (v1.04)

 

Sujets relatifs
linux épuré avec vmwareGestion d'impression linux
Petit guide de la virtualisation sous LinuxComment lire des vidéos avec DRM sous Linux ?
Linux Styles - Un site de personalisation linuxEasy php ... mais sous linux :D
[ Apache- PHP sous Linux] installation et lancementcarte son usb et linux
Installer linux en réseauJouer sous linux
Plus de sujets relatifs à : ioview et netview pour mesurer les débits DD et net sous Linux (v1.04)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR