On Thu, 21 Apr 2005, Marc Lehmann wrote:

> On Thu, Apr 21, 2005 at 11:29:38AM +0200, Dag Wieers <[EMAIL PROTECTED]> 
> wrote:
> > I can repeat this, but it's more like within the first miliseconds.
> 
> Fast system with no activity :) On my dual-P3 1Ghz dstat usually needs
> around 4 seconds to start up. On my dual 600mhz p3 machine it can take up
> to 10 seconds.

Ouch, blame python :) I'm wondering if your system might slow down dstat 
this badly that the job scheduling can't guarantee a near 1 second 
interval. Could you try the following:

        Go to the time plugin (dstat_time) and uncomment the following 2 
        lines:

                ### Nice for debugging timer
        #       self.format = '%13.3f'
        #       self.len = 14

And then use dstat -t <options>. On my system it results in:

[EMAIL PROTECTED] dstat]# ./dstat -ta
-----time----- ----total-cpu-usage---- -disk/total -net/total- ---paging-- 
---system-- ---load-avg---
____epoch_____|usr sys idl wai hiq siq|_read write|_recv _send|__in_ 
_out_|_int_ _csw_|_1m_ _5m_ 15m_
1114086817.075|  5   4  87   4   0   0|   0     0 |   0     0 |   0     0 |   0 
    0 |0.12 0.06 0.08
1114086818.070|  1   3  96   0   0   0|   0     0 |   0     0 |   0     0 |1053 
  906 |0.11 0.06 0.08
1114086819.071|  1   3  96   0   0   0|   0     0 |   0     0 |   0     0 |1082 
  844 |0.11 0.06 0.08
1114086820.072|  1   4  95   0   0   0|   0     0 |   0     0 |   0     0 |1061 
  885 |0.11 0.06 0.08
1114086821.073|  1   3  96   0   0   0|   0     0 |   0     0 |   0     0 |1082 
  814 |0.11 0.06 0.08

So you see a 1ms deviation per second. (about 1sec deviation after 17mins)

Now try the same when enabling the following lines:

            ### Increase precision if we're root (does not seem to have effect)
        #   if os.geteuid() == 0:
        #       os.nice(-20)
        #   sys.setcheckinterval(op.delay / 10000)

And let me know if this makes a difference for you. On all occasions it 
never made a real difference for me. (ie. you may want to try this both as 
root as well as a user and maybe disable the if statement)


> > I'm not sure if the proper thing to do is to import the python modules 
> > within my try-block.
> 
> I have no idea, either, but the proper thing to do would be not to display
> any tracebacks or anything. My biggest grief with many python programs
> (bittorrent for example) is that they love to output tracebacks without
> exiting when ^INT :)

I understand, but the code becomes more ugly :/ (ie. I have to indent a 
complete block + subblocks of code...). But if it can take up to 10secs, 
you're absolutely right. I'm going to look into speeding up dstat (or 
slowing down my system and profiling statements, I bet some modules take 
a long time and may not be necessary all the time).

> I guess the best thing is to only catching INT before initscr, as before
> there is no reaosn even to catch the signal, because catching it only adds
> time before the user gets back at his/her prompt (there is nothing to
> cleanup), although I suspect that it can't be done with python.

It can be done. But it still requires me to import the signal module :)


> > I noticed eg. that yum only imports sys before importing everything else
> > in a try-block. Which reduces the chance of being hit by this.
> 
> The important thing is that it can be reproduced.
> 
> However, despite me bashing on this, it really is a very very minor issue
> :)

I understand. But details matter to me too (and there are no major 
problems currently). I hate tracebacks too (when there's no problem).

--   dag wieers,  [EMAIL PROTECTED],  http://dag.wieers.com/   --
[all I want is a warm bed and a kind word and unlimited power]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to