PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  BQc@sddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z mZmZmZddl mZddlmZddlmZddlmZdd d d d d dgZdZdZdZdZdZeZdefdYZ defdYZ!defdYZ"defdYZ#defdYZ$de%fdYZ&d Z'd!Z(d"Z)d#e j*d$Z+d%Z,dS(&i(tprint_functionN(t find_uidstTaskStatsNetlinkt ProcessListtStats(t ThreadInfo(tVERSION(tioprio(tIoprioSetErrortBtKtMtGtTtPtEcCs||dkrd}n |dkr1d}| }ndSttj|ddd}d|t|dd|>t|fS( Nitt-s0.00 Bii s %s%.2f %si(tinttmathtlogtfloattUNITS(tsizetsigntexpo((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt human_size-s     cCs|jrd|dSt|S(Ns%.2f Kg@(t kilobytesR(toptionstbytes((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt format_size9s  cCs!t||ot||dS(Ns/s(RR(RRtduration((s,/usr/lib/python2.7/site-packages/iotop/ui.pytformat_bandwidth>sc sfd}jrF|j}fd}tj|jn|j}fd}||j}||j}||j}|j|j } t d| } || } |||| fS(Ncsdtd|dS(Ns%.2f %%g(\X@gcA(tmin(tdelay(R(s,/usr/lib/python2.7/site-packages/iotop/ui.pyt delay2percentDscs t|S(N(R(RR(R(s,/usr/lib/python2.7/site-packages/iotop/ui.pytHscst||S(N(R (RR(R(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$Lsi( t accumulatedt stats_accumttimetstats_accum_timestampt stats_deltatblkio_delay_totaltswapin_delay_totalt read_bytest write_bytestcancelled_write_bytestmax( RtprocessRR#tstatstdisplay_formattio_delayt swapin_delayR,t written_bytesR-((RRs,/usr/lib/python2.7/site-packages/iotop/ui.pyt format_statsAs   cCsEy ttdjjSWntk r@}t|dSXdS(Ns/proc/sys/kernel/pid_maxi(tlentopentreadtstript Exceptiontprint(te((s,/usr/lib/python2.7/site-packages/iotop/ui.pytget_max_pid_widthVs   t CancelInputcBseZRS((t__name__t __module__(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR?dst InvalidIntcBseZRS((R@RA(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyRBest InvalidPidcBseZRS((R@RA(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyRCfst InvalidTidcBseZRS((R@RA(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyRDgstInvalidIoprioDatacBseZRS((R@RA(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyREhstIOTopUIc BseZdefdefdefdefdefdefdefdefgZdZd Zd Zd Zd Z ded Z dedZ dZ dZdZdZddZddZdZdZdZdZRS(cCs|jS(N(tpid(tpts((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$qscCs |jS(N(tioprio_sort_key(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$rscCs |jS(N(tget_user(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$sscCs|jS(N(R,(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$tscCs|j|jS(N(R-R.(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$uscCs|jS(N(R+(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$vscCs!|jp t|jp|j S(N(R*RR,R-(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$ys cCs |jS(N(t get_cmdline(RHRI((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR${scCs||_||_d|_tj|jd|_|jjs||_|jy%t j t j t j dWqt j k rqXndS(Niii(t process_listRt sorting_keyRFt sorting_keystsorting_reversetbatchtwintresizetcursestuse_default_colorst start_colortcurs_setterror(tselfRRRMR((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt__init__~s        cCs|jj\|_|_dS(N(RRtgetmaxyxtheighttwidth(RY((s,/usr/lib/python2.7/site-packages/iotop/ui.pyRSsc Csd}tj}|jjsD|jtjjtjtj Bnx|jj dksk||jj kr|j j \}}|j|dk|||j j|jj dk r|d7}||jj krPqn|dkrd}ny|j|jjd}WnAtjk rL}|jrF|jdtjkrFg}qMnXx8|D]0\}}|tjtjB@rTtjdqTqTW|jjs|jn|rG|jj} |j| qGqGWdS(Niig@@(tselecttpollRRQtregistertsyststdintfilenotPOLLINtPOLLPRIt iterationstNoneRMtrefresh_processestrefresh_displayRt delay_secondsRXtargsterrnotEINTRtPOLLERRtPOLLHUPtexitRSRRtgetcht handle_key( RYRfR_ttotaltactualteventsR=tfdteventtkey((s,/usr/lib/python2.7/site-packages/iotop/ui.pytruns:  &       cCs|j |_dS(N(RP(RY((s,/usr/lib/python2.7/site-packages/iotop/ui.pytreverse_sortingscCs||j}|j|7_td|j|_tttjd|j|_||jkrxtj|jd|_ndS(Nii(RNR/R!R7RFRORP(RYtdeltatorig_sorting_key((s,/usr/lib/python2.7/site-packages/iotop/ui.pytadjust_sorting_keys  "cCs|jjddtdtjB|j|jjdd|tj|jjtj tj d|jj dt |}tj dtj |dkr|S|rtn|S(Niit R(NR(RRthlinetordRTtA_NORMALR]taddstrtA_BOLDtrefreshtechoRWtgetstrR7tnoechoRgR?(RYtprompttdefaulttempty_is_canceltinp((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_strs)       cCsD|j|||}yt|SWntk r?tnXdS(N(RRt ValueErrorRB(RYRRRR((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_ints  cCsEy|jdSWn-tk r-tntk r@nXdS(NsPID to ionice: (RRBRCR?(RY((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_pids    cCsEy|jdSWn-tk r-tntk r@nXdS(NsTID to ionice: (RRBRDR?(RY((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_tids    cCsyA|dk r+|jd||t}n|jddt}Wntk r]tnX|dksv|dkrtn|S(Ns'I/O priority data (0-7, currently %s): sI/O priority data (0-7): ii(RgRtFalseRBRE(RYt ioprio_dataR((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_datas     c Csy|j|}Wntk r,d}nXt|d}xtr|jjddtdtjB|j |jj dd|tj t|}xnt |D]`\}}d|} ||krtj } n tj} |jj d|| | |t| 7}qWxtr|jj} | tjtdfkrU|dkrU|d8}Pq | tjtdfkr||kr|d7}Pq | tjtdtd fkr||S| d tjtjtjtd td fkr tq q Wq@WdS( NiiiR~s %s tltrs s itqtQ(tindexRR7tTrueRRRRRTRR]tinsstrRt enumeratet A_REVERSERqtKEY_LEFTt KEY_RIGHTt KEY_ENTERt KEY_CANCELt KEY_CLOSEtKEY_EXITR?( RYRt display_listtret_listtselectedtset_lentoffsettititemtdisplaytattrRx((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_sets:   )      ' ' $!cCsUd}dddg}dddg}|dkr9d}n|j||||}|S( NsI/O priority class: s Real-times Best-efforttIdletrttbetidlei(RgR(RYt ioprio_classRtclasses_promptt classes_retR((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_classs  sError!cCsg|jjddtdtjB|j|jjddd|tj|jjt j ddS(NiiR~s %s ( RRRRRTRR]RRRR'tsleep(RYRX((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_errors)  cCs:|jjddtdtjB|j|jjdS(NiiR~(RRRRRTRR]R(RY((s,/usr/lib/python2.7/site-packages/iotop/ui.pyt prompt_clear"s)csbfd}fd}fd}fd}idtd6dtd6fd td 6fd td 6|td 6|td6|td6|td6|td6|td6|td6|td6fdtj6fdtj6fdtj6fdtj6}|j|d}|dS(NcsjjtN_dS(N(RR%R((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyttoggle_accumulated'scsjjtN_dS(N(RtonlyR((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyttoggle_only_io)scs0jjtN_jjjjdS(N(Rt processesRRMtclearRh((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyttoggle_processes+s csyjjr0j}jj|}n!j}t|jj}|j}t j |\}}j |}|dkrd}nj |}|j ||jjjjWntk r}jd|jntk rjdn|tk r3jdn_tk rPjdnBtk rmjdn%tk rjn XjdS(NRisError setting I/O priority: %ssInvalid process id!sInvalid thread id!sInvalid I/O priority data!sInvalid integer!(RRRRMt get_processRRttaskstats_connectiont get_ioprioRtto_class_and_dataRRt set_ioprioRRhRRterrRCRDRERBR?R(RGt exec_unitttidt ioprio_valueRRR=(RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pytionice/s:            cSs tjdS(Ni(RaRp(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$TsRcSs tjdS(Ni(RaRp(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$VsRcs jS(N(Rz((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$XsRcs jS(N(Rz((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$ZstRtatAtotORHRRtIcs jdS(Ni(R}((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$lscs jdS(Ni(R}((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$nscsjttj S(N(R}R7RFRO((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$pscsjttjS(N(R}R7RFRO((RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$rscSsdS(N(Rg(((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$us(RRTRRtKEY_HOMEtKEY_ENDtget(RYRxRRRRt key_bindingstaction((RYs,/usr/lib/python2.7/site-packages/iotop/ui.pyRr&s.#        csfd}fd}tt|jjj}tjjdjj rkdn d|j dfddj jj s|j d 3ntt||S( Nc s<tj|jj}|\}}}}tjrId||f}nd}dt}|d|j|j|j d |||f}|j } jj sj t |} d| kot | knr| dd} | | d } | | d| | } qn|| 7}jj s8|j }n|S( Ns%7s %7s s ?unavailable? s%%%dds %4s %-8s %11s %11s %siiit~(R6RRMRRthas_blkio_delay_totalt MAX_PID_WIDTHRGRRKRLRQR]R7( RHR1R3R4R,R-t delay_statst pid_formattlinetcmdlinetremaining_lengthtlen1toffset2(RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pytformatys(     "  cs jj p|jjjS(N(RRt did_some_ioR%(RH(RY(s,/usr/lib/python2.7/site-packages/iotop/ui.pyt should_formats icSs|jS(N(R&(RH((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$scSs|jS(N(R)(RH((s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$sRxcs||S(N((RH(Rxt stats_lambda(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$streversei(tlisttfilterRMRtvaluesRFRORNRR%tsortRPRQR\tmap(RYRRR((RxRYRs,/usr/lib/python2.7/site-packages/iotop/ui.pytget_dataxs      cs)dtj|d|jdtj|d|jdfdtj|d|jdtj|d|jdfgtdtdd}jjr|d7}n |d 7}|d d d d dddg}j}jjrYdg|}tjd}g|D]} || ^q#}gD]} || ^q@njj rjj dkrxD]} t | q~Wjj t |krt dj |qnx|D]} t | qWtjjn7jjx7tD])\} jjd| j qWjjtdtdtjBjj} xtt|D]tj} |} jkr| d} njkr| tjO} | jrdpd7} n| | } | t| 8} jj| | qWtj r0d}nd}t"t|j#dt t$|}xt|D]syVfd}y||Wn(t%k r||j&dnXWqotj'k rqoXqoW|rjj(j#td|tjnjj)dS(Ns,Total DISK READ : %s | Total DISK WRITE : %siiis,Actual DISK READ: %s | Actual DISK WRITE: %siR~tPIDtTIDs PRIOs USERs DISK READs DISK WRITEs SWAPINs IOs COMMANDs TIMEs %H:%M:%S iRt>td?dd@d dAd dBd dC|j dDdd d dEd t d tj |j \}|ro|j dFdGj|ntjpg_jpjpj_fdHjrfdI}t|ndS(JNRs8unable to set locale, falling back to the default localetusagetversionsiotop s-os--onlyRt store_truetdestRRthelps1only show processes or threads actually doing I/Os-bs--batchRQsnon-interactive modes-ns--iterttypeRRftmetavartNUMs-number of iterations before ending [infinite]s-ds--delayRRjs#delay between iterations [1 second]tSECis-ps--pidtpidstappends"processes/threads to monitor [all]Rs-us--usertstrtuserssusers to monitor [all]tUSERs-Ps --processesRs$only show processes, not all threadss-as --accumulatedR%s)show accumulated I/O instead of bandwidths-ks --kilobytesRs.use kilobytes instead of a human friendly units-ts--timeR's.add a timestamp on each line (implies --batch)s-qs--quiettcountRis/suppress some lines of header (implies --batch)s --profiletprofilesUnexpected arguments: R~cs tS(N(R((R(s,/usr/lib/python2.7/site-packages/iotop/ui.pyR$bscsy WnnXdS(N(((t main_loop(s,/usr/lib/python2.7/site-packages/iotop/ui.pytsafe_main_loopes (tlocalet setlocaletLC_ALLtErrorR<toptparset OptionParsertUSAGERt add_optionRt SUPPRESS_HELPt parse_argsRXRRR1RQR'RR7R'(tparserRkR9((R8Rs,/usr/lib/python2.7/site-packages/iotop/ui.pytmain6s\  ! !    !   (-t __future__RRTRlR:RR>R"R^RRaR't iotop.dataRRRRRt iotop.versionRtiotopRt iotop.ioprioRRRRR R6R>RR;R?RBRCRDREtobjectRFR RR'targvR@RE(((s,/usr/lib/python2.7/site-packages/iotop/ui.pytsD          "     }  $