The field totalmem was formerly used to hold the percentage of used mem
by a process. So at update time, the field info.memmax was being
addressed, which is potentially being updated at the same time, As all
updating routines potentially run in parallel. Though there is an
(quite) easy fix for this: calculate the percentage upon object
printing. This works because conky synchronises all update routines
right before printing the result. (To omit locking on it's own.)
Yes, I also thought these are monotonic counters. But it seems like they
are not, at least sometimes the value decreases by 1 leading to a very
very high cpu usage percentage being printed.
* Drop all need_mask alterations (no idea why there were here at all,
but surely not sane since they are missing in the non-linux
functions).
* Drop the update delay for update_meminfo(), as parsing /proc should
not lead to abnormal overhead.
* Check for x_initialised from inside update_x11info(), so we can call
it unconditionally.
Basically, I just added three new process properties (io_read, io_write, io_perc - representing
the amount of I/O done by the process during the update interval) and $top_io, that sorts
processes based on io_perc.
Atm, it's completely #ifdef'd, since it requires kernel support. But that creates some wierd
looking syntax at some places, so it may be better to remove some ifdefs. It even may be
possible to completely remove the ifdefs (ie. convert them to #ifdef linux) since the code will
compile just fine even if the kernel doesn't support I/O accounting. I'll leave that for someone
else to decide.
This makes it possible for the compiler to do better optimizations by
adding "static" to functions which do not need to be exported.
Since some of them (e.g. the compare_*() functions) are called very
often, this may decrease conky's need of resources a bit.
* instead of empty args "void" should always be specified.
Using this, the compiler can detect incorrect function calls,
like with update_stuff().
* No args seems to be interpreted as "unspecified args" by the
compiler, as with update_mail_count(). So no checking for
correctness of arguments when calling was done at all.
* This is not complete yet, as I still don't have any BSD for
testing.
git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@1055 7f574dfc-610e-0410-a909-a81674777703
* Applied some more submitted patches:
1) Add long forms of (most of) the command-line options.
2) Added an option (top_cpu_separate) that emulates top's "separate
cpus" option. Processor usage is shown as a percentage of a
single processor on your system, instead of a percentage
of all processors combined.
3) Adds a parameter (time) to top and top_mem that will show the
cumulative CPU time of a process.
4) Simplified integer rounding.
5) Fixed the window width when a goto is used.
6) Fixed the window width when an offset is used.
(thanks Kevin Lyles).
git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@994 7f574dfc-610e-0410-a909-a81674777703