]> granicus.if.org Git - procps-ng/log
procps-ng
10 years agolibrary: fixing buffer sizes in sysinfo.c
Jaromir Capik [Mon, 14 Jul 2014 17:07:25 +0000 (19:07 +0200)]
library: fixing buffer sizes in sysinfo.c

10 years agolibrary: changing P_G_SZ from 20 to 33
Jaromir Capik [Mon, 14 Jul 2014 14:21:52 +0000 (16:21 +0200)]
library: changing P_G_SZ from 20 to 33

Nowadays the usernames can be 32 characters long
(typically OpenShift usernames use the whole length)
and the old limit was preventing us from processing
them correctly.
The macro change affects the proc_t structure size.

10 years agolibrary: removing note about PROC_{PID,UID} being obsolete
Jaromir Capik [Mon, 14 Jul 2014 14:12:53 +0000 (16:12 +0200)]
library: removing note about PROC_{PID,UID} being obsolete

10 years agodocs: adding openproc(), readproc() and readproctab() man
Jaromir Capik [Mon, 14 Jul 2014 14:07:23 +0000 (16:07 +0200)]
docs: adding openproc(), readproc() and readproctab() man

10 years agofree: support for MemAvailable
Jaromir Capik [Fri, 11 Jul 2014 20:34:06 +0000 (22:34 +0200)]
free: support for MemAvailable

This commit adds a new switch -a/--available that
appends a new column called 'available' to the
output. The column displays an estimation
of how much memory is available for starting
new applications, without swapping. Unlike the data
provided by the 'cached' or 'free' fields, this
field takes into account page cache and also that
not all reclaimable memory slabs will be reclaimed
due to items being in use.

10 years agops: add -q/q/--quick-pid option
Jaromir Capik [Thu, 10 Jul 2014 19:14:02 +0000 (21:14 +0200)]
ps: add -q/q/--quick-pid option

This commit introduces a new option q/-q/--quick-pid
to the 'ps' command. The option does a similar job
to the p/-p/--pid option (i.e. selection of PIDs
listed in the comma separated list that follows
the option), but the new option is optimized
for speed.
In cases where users only need to specify a list
of PIDs to be shown and don't need other selection
options, forest type output and sorting options,
the new option is recommended as it decreases
the initial processing delay by avoiding reading
the necessary information from all the processes
running on the system and by simplifying
the internal filtering logic.

10 years agotop: fix potential 'nan', should a system have no Swap
Jim Warner [Fri, 4 Jul 2014 05:00:00 +0000 (00:00 -0500)]
top: fix potential 'nan', should a system have no Swap

Gosh, just because most of us might run with some swap
file allocated, not every system might. I only wish my
testing methodology was as sophisticated as Jaromir's.

Reference(s):
http://www.freelists.org/post/procps/latest-top-enhancements,7

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: as with ps, distinguish between 'T' and 't' state
Jim Warner [Thu, 3 Jul 2014 05:00:00 +0000 (00:00 -0500)]
top: as with ps, distinguish between 'T' and 't' state

Wow, even the linux/Documentation/filesystems/proc.txt
document doesn't provide us with that level of detail.

Thank you, Jaromir, for your additional clarification!

Reference(s):
commit 411d218793af1f7ef6db37b319c1b08a7ca7c9b8

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: add another translation hint for graphs alignment
Jim Warner [Wed, 2 Jul 2014 05:00:00 +0000 (00:00 -0500)]
top: add another translation hint for graphs alignment

This should be the last of this kind of crap. I'll get
to work on some means to no longer burden a translator
with lengths requirements. Ideally each word should be
allowed to stand alone and the minimum/maximum lengths
handled programmatically when our ol' top is executed.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: with new startup defaults, tweak the man document
Jim Warner [Tue, 1 Jul 2014 05:00:00 +0000 (00:00 -0500)]
top: with new startup defaults, tweak the man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: eliminated unreferenced macros & an error message
Jim Warner [Mon, 30 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: eliminated unreferenced macros & an error message

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agopgrep: Fixing regression in exitcodes
Jaromir Capik [Wed, 2 Jul 2014 15:42:08 +0000 (17:42 +0200)]
pgrep: Fixing regression in exitcodes

The pgrep usage() rework commit from 26-Sep-2011 introduced
a regression in exitcodes and the pgrep tool now returns
EXIT_FAILURE (1) or even EXIT_SUCCESS (0) instead
of the documented EXIT_USAGE (2). This commit fixes
the usage() so that the exitcodes match the manual.

10 years agodocs: distinguish between T/t in the ps.1 manual
Jaromir Capik [Wed, 2 Jul 2014 14:23:30 +0000 (16:23 +0200)]
docs: distinguish between T/t in the ps.1 manual

10 years agoAdded polish translation
Craig Small [Tue, 1 Jul 2014 11:48:27 +0000 (21:48 +1000)]
Added polish translation

10 years agotop: retire old stale startup defaults in favor of new
Jim Warner [Sun, 29 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: retire old stale startup defaults in favor of new

For over a decade top has used a startup configuration
mimicking the original redhat top. This decision dates
back to when the forked Sourceforge version was trying
to win over users in battles with that ancient kludge.

Will anybody deny that those defaults are coyote ugly?

Well, it is time that top presented a more modern look
at startup, providing that no saved rcfile exists. But
just in case some distro prefers that old, comfortable
look, there's the '--disable-modern-top' build option.

[ Pssst. With the widened memory fields it turns out ]
[ the 'Mem' default window had become almost useless ]
[ on an 80x24 terminal since %CPU & COMMAND were out ]
[ of view. So some other defaults were tweaked a bit ]
[ whether or not --disable-modern-top was specified. ]

Reference(s)
http://www.freelists.org/post/procps/tops-graph-mode-saga-continues,3

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: maximize recent locale aware numeric enhancements
Jim Warner [Sat, 28 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: maximize recent locale aware numeric enhancements

When startup argument parsing was recently enhanced to
account for LC_NUMERIC settings, some user input logic
dealing with numbers fails to exploit that capability.

This patch extends such enhancements to a running top.

Reference(s):
commit f7b84f45c7ae99c276de9954fc16cdc4ff7f36f0
http://www.freelists.org/post/procps/topwatch-floating-point-input,2

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoReliably kill test processes
Craig Small [Tue, 1 Jul 2014 08:51:21 +0000 (18:51 +1000)]
Reliably kill test processes

It seems command -v also includes built-ins so checking for kill
is useless because it finds the built-in and those machines or
environments that have no /bin/kill fail at the check stage.
Oh and then TCL exec doesn't spawn a shell.

After reading way too many TCL websites, I believe this should
fix the problem. TCL quoting is... different to say the least but
it works reliably here. The script now even picked up a typo elsewhere
which was nice.

This change should stop the intermittent FTBFS bugs from the Debian
pbuilders, I hope! You'd think kill $var wouldn't be this difficult.

10 years agotop: afford each window its own cpu/memory graph modes
Jim Warner [Fri, 27 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: afford each window its own cpu/memory graph modes

When those new cpu/memory graphs modes were introduced
they had global impact. In other words, the modes that
were chosen for a 'current' window affect Summary Area
appearance for every other window as well, even though
each window sets unique View_STATES/View_MEMORY flags.

I do not know how widespread the use of top's separate
window provisions is, but I do know that documentation
promises every window (field group) provides "a unique
separately configurable summary area". And even though
that promise does not include memory scaling (separate
'E' command) the graph modes are integral to 't' & 'm'
and those were already observed on a per window basis.

So this patch just takes the cpu and memory graph mode
values out of global scope in the configuration file &
gives each window its own unique pair of graph values.

Reference(s):
commit 1d171ec74163f3103e7b230ee63818df04b4526f

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: fix translation hint to preserve graphs alignment
Jim Warner [Thu, 26 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: fix translation hint to preserve graphs alignment

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoManpage translations in Makefiles
Craig Small [Sat, 28 Jun 2014 13:38:13 +0000 (23:38 +1000)]
Manpage translations in Makefiles

The translated manpage generation has moved from scripts to
Makefiles. This asists with conditional building as well, no
need to regenerate the German pgrep man page if both
the original pgrep.1 and man-po/de.po is not changed.

My Makefile-fu fails me on producing a cross-product or double
iteration for languages and man pages. Until that is solved
each man page is explicitly built. No big deal but it doesn't
look elegant in the Makefile. Languages will be picked
up automatically if they are found in man-po, man-po/top or
man-po/ps

The README describes the three-step process for translating
the files, incase I forget or someone else wants to update them.

10 years agoMoved man-po pot file creation into Makefile
Craig Small [Wed, 25 Jun 2014 13:11:15 +0000 (23:11 +1000)]
Moved man-po pot file creation into Makefile

The pot files for man-po are part of the extra_dist target so are
built at dist time. These used to be created as part of the dist-hook.
However it is better to control their builds in the Makefile so they
are conditionally built. It also means distcheck doesn't complain when
they are added to the CLEANFILES.

10 years agotop: tweak argument parsing for some locale situations
Jim Warner [Wed, 25 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: tweak argument parsing for some locale situations

Boy I hate locale stuff. For code I thought was pretty
robust, Jaromir sure proved that it wasn't. Anyway, me
thinks this commit closes some gaps and will cause top
to behave appropriately under various locale settings.

It does *not* permit top to respond to the ',' and '.'
floating point separator without regard to the locale.
It does, however, enforce proper LC_NUMERIC responses.

Let's look on this commit as an interim solution until
Jaromir can create that proposed 'fp_decode' function.
Who knows, he might even borrow some of our mkfloat().

[ An aside: the coreutils sleep and timeout programs ]
[ claim to permit floating point arguments. However, ]
[ neither one will accept the comma separator should ]
[ the locale be a country that in fact uses a comma. ]

[ In other words, with this commit we are way ahead! ]

Reference(s):
http://www.freelists.org/post/procps/topwatch-floating-point-input
http://www.freelists.org/post/procps/topwatch-floating-point-input,1

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: let's not pretend top can catch SIGKILL & SIGSTOP
Jim Warner [Tue, 24 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: let's not pretend top can catch SIGKILL & SIGSTOP

While there was no harm done setting a handler for the
above two signals, they are in fact uncatchable. Thus,
whenever we ran with valgrind we're politely reminded.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoFix some man-po stuff for distcheck
Craig Small [Tue, 24 Jun 2014 12:20:13 +0000 (22:20 +1000)]
Fix some man-po stuff for distcheck

distcheck failed because the man-po scripts weren't sourcing or
escaping the directories correctly.

This is a partial fix, but at least distcheck is happy.

10 years agotop: scale length for new graphs to a terminal's width
Jim Warner [Mon, 23 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: scale length for new graphs to a terminal's width

When the beginning of the Mem/Swap graphs was variable
scaling them to the current terminal's width was a bit
of a costly nightmare. So the graph size was fixed and
subject to truncation. However now that the start of a
graph can be easily predicted, I've revisited scaling.

As it turns out, any cost is minimal & mostly incurred
at an opportune time, at SIGWINCH or user interaction.
Plus, most of the apparent arithmetic is actually just
a means of documenting and will disappear thru compile
time constants in the ultimate generated machine code.

Note: those graphs will now behave just like any other
Summary Area element - they will scale from full sized
down to a terminal width of 80 columns, at which point
those displayed graphs are then subject to truncation.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: with new bar graphs, make 'b' toggle unrestricted
Jim Warner [Mon, 23 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: with new bar graphs, make 'b' toggle unrestricted

While the 'b' toggle remains window based (vs. global)
it should no longer require that the window be visible
and either the 'x' or 'y' toggles to be on. Previously
those requirements were intended to remind a user that
there must be something for this command to highlight.

With the introduction of graph modes (specifically the
the bar graph) the 'bold/reverse' toggle has important
implications beyond highlighting some columns or rows.

The %Cpu(s) graph and Mem portion of the memory graphs
are designed to offer a visual clue as to the separate
elements comprising them. But that separation could be
lost under some X color schemes or when top is running
without color (in monochrome mode) and the block graph
is selected. But, if the graph is then changed to bars
any separation always becomes visible whenever the 'b'
toggle is turned off. Portions then show in 'reverse'.

So from now on we'll check nothing, we'll just toggle.

[ Besides, with all the code thrown at restricting a ]
[ 'b' toggle use, it might have all been for naught. ]
[ That toggle could still be set/unset using the 'Z' ]
[ command and the color mapping screen. Geez Louise! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: reflect current graph modes state in man document
Jim Warner [Sun, 22 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: reflect current graph modes state in man document

This patch just beefs up the man documentation for the
new graphs modes while also reflecting the most recent
program changes, prompted by the feedback shown below.

Reference(s):
http://www.freelists.org/post/procps/latest-top-enhancements,1

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: make '#define GRAPHS_ALIGN' an immutable solution
Jim Warner [Sun, 22 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: make '#define GRAPHS_ALIGN' an immutable solution

My original graph modes implementation made no attempt
to align the Cpu & Mem/Swap graphs. I thought, rather,
that such alignment could be best achieved by the user
using top's 'E' memory scaling command toggle. In that
way Mem/Swap prefixes could be reduced by 3 positions,
bringing the beginning '[' into line with the %Cpu(s).

If that proved to be too cumbersome a #define could be
enabled making the Mem/Swap prefix static while adding
a few padding bytes to the %Cpu line(s) for alignment.
It was those waisted bytes that were the most concern.

What I had not counted on was the fact that the memory
lines themselves might become misaligned & that became
likely with more physical memory present. That too can
be cured with the 'E' command but as scaling is raised
we soon reach a meaningless total such as '0.003' even
though the displayed % remains valid (and unchanging).

So this commit implements unconditionally what used to
be conditional. But, instead of waisting padding bytes
we'll put that space to good use with a new 'total %'.

Reference(s):
http://www.freelists.org/post/procps/latest-top-enhancements,1
commit 1d171ec74163f3103e7b230ee63818df04b4526f

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: shorten some lines by changing a few declarations
Jim Warner [Sun, 22 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: shorten some lines by changing a few declarations

My first blush graphs modes implementation went just a
tad overboard on identifier lengths. As a result, some
program lines were getting quite long. So, this commit
will simply shorten some excessively long identifiers.

Reference(s):
http://www.freelists.org/post/procps/latest-top-enhancements
commit 1d171ec74163f3103e7b230ee63818df04b4526f

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoNEWS: update with accumulated changes for next release
Jim Warner [Thu, 19 Jun 2014 05:00:00 +0000 (00:00 -0500)]
NEWS: update with accumulated changes for next release

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: add graphs modes for cpu and memory, man document
Jim Warner [Wed, 18 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: add graphs modes for cpu and memory, man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: add graphs modes for cpu and memory, program code
Jim Warner [Wed, 18 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: add graphs modes for cpu and memory, program code

This patch makes 't' (View_STATES) & 'm' (View_MEMORY)
commands into 4-way toggles. The two new modes provide
for two different graphs of the cpu and/or memory use.

These new capabilities are similar to those offered by
the 'htop' program. However they're aesthetically more
pleasing (to me) plus the scalings are more authentic.

Poor ol' top has long been troubled by the comparisons
offered up by the 'htop' program. Many of those things
were only true of the original redhat top while others
are no longer true of this current top program. So let
me use this commit msg to begin to correct the record.

Corrected comparisons between 'htop' & 'top' programs:
------------------------------------------------------
+ htop does not start faster, actually reverse is true
+ top offers scrolling vertically and horizontally too
. (and top offers better <Home> and <End> key support)
+ unassigned keystrokes don't subject top to any delay
. (but htop suffers that annoying ncurses <Esc> delay)
+ in top one need not type the PID to kill the process
+ in top one need not type the PID to renice a process

Some things the 'htop' program was not bragging about:
------------------------------------------------------
+ top can outperform the htop program by a wide margin
+ htop + SIGWINCH = corrupted display + restart likely
+ htop cannot preserve its screen data at suspend/exit
+ the htop column management scheme is very cumbersome
+ htop allows columns to be duplicated again and again
+ htop displays only full command lines, not pgm names
. (and that 'Command' column must always be displayed)
. (and it must always remain as the last column shown)
+ htop does not provide for any sort of command recall
+ htop's search feature does not highlight any matches
+ there is no 'find next' outside of htop search modes
+ htop does not allow Header or Process memory scaling
+ htop provides no flexibility on column justification
+ htop does not provide the means to change col widths
+ htop provides less control over colors configuration
+ htop always overwrites the rcfile with any UI change

Someday, maybe we'll provide a better comparison as an
addendum for (or replacement of) that README.top file.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: rearrange Mem & Swap lines and standardize 'used'
Jim Warner [Wed, 18 Jun 2014 05:00:00 +0000 (00:00 -0500)]
top: rearrange Mem & Swap lines and standardize 'used'

In anticipation of upcoming memory graphing provisions
the abbreviations 'Mem' and 'Swap' are being made into
individual translatable strings in order to be reused.

Additionally, the Mem 'used' amount will now no longer
included the 'buffers' and 'cached' values. Thus, each
Mem category becomes unique. This is the approach used
by tools such as 'htop' or the gnome 'System Monitor'.

Lastly, with that change to the 'used' category it has
been repositioned after 'free' on the Mem & Swap lines
making a comparison between 'total' and 'free' easier.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoFixed translate-man.sh for no top ps
Craig Small [Wed, 28 May 2014 10:12:33 +0000 (20:12 +1000)]
Fixed translate-man.sh for no top ps

the script errored when top or ps translations didnt exist
this minor fix skips those if they dont exist.

10 years agoNew translations
Craig Small [Wed, 28 May 2014 09:53:14 +0000 (19:53 +1000)]
New translations

Added German, Polish, Ukrainian and Vietnamese translations

10 years agoTranslated man page scripts
Craig Small [Wed, 28 May 2014 09:51:37 +0000 (19:51 +1000)]
Translated man page scripts

Mario sent some scripts to maintain translated man pages.
This commit is almost the same scripts with minor adjustments.

Reference: http://www.freelists.org/post/procps/Translations-for-man-pages,17

10 years agotop: tweak hotplugged response and frame refresh logic
Jim Warner [Tue, 27 May 2014 05:00:00 +0000 (00:00 -0500)]
top: tweak hotplugged response and frame refresh logic

For some time now, top has refrained from updating the
current number of cpus and memory totals with each and
every refresh cycle. Rather, to lessen overhead costs,
such values are updated periodically (5 min & 3 secs).

The delay in updating the cpu count was only important
with the addition of a cpu, since any loss is detected
immediately. And the large interval was chosen because
of the costs once associated with a glibc sysconf call
and an unlikely scenario of physically adding the cpu.

But the ease with which cpus can be taken offline then
placed back online under linux suggests that 5 minutes
may be too high. So, without addressing the likelihood
of that act, top is now more responsive in these ways:

1) that 5 minute interval has been reduced to 1 minute
2) any key, not just Enter/Space, refreshes cpus & mem

Note: we leave the man document as is, suggesting that
only the Enter/Space keys force an update for hotplug.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agops: correct some man document deficiencies/aberrations
Jim Warner [Sat, 24 May 2014 05:00:00 +0000 (00:00 -0500)]
ps: correct some man document deficiencies/aberrations

. a 'space' misinterpreted as the continuation request
. continuation character, resulting in a concatenation
. 2 missing fields inadvertently omitted from man page

Reference(s):
. bug report regarding missing fields
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/115016

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: add missing summary area info to the man document
Jim Warner [Sat, 24 May 2014 05:00:00 +0000 (00:00 -0500)]
top: add missing summary area info to the man document

Way back for release 3.2.6 of the original procps top,
a patch was introduced to explain abbreviations in the
summary area showing cpu state percentages. Ever since
that time the the 'id/idle' category has been missing.

This patch simply corrects that oversight, having been
noticed after a review of the outstanding Ubuntu bugs.

Reference(s):
. deficiency yet unresolved (May 2010)
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/574624
. patch incorporated into 'ng' (Feb 2011)
commit ee5fd1dce1fe91531b8ee5ec3d7c6620fb7dc6a3
. cpu states doc requests (Jun 2005, Jan 2004)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=312157
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=228899

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoMerge branch 'master' of gitorious.org:procps/procps
Craig Small [Tue, 27 May 2014 10:51:25 +0000 (20:51 +1000)]
Merge branch 'master' of gitorious.org:procps/procps

10 years agoReduced partition type check
Craig Small [Tue, 27 May 2014 10:49:16 +0000 (20:49 +1000)]
Reduced partition type check

vmstat -p checks used to fail on systems with odd
partition tables, including some Debian buildd servers.
This change limits what sort of test partitions are used,
otherwise the test is skipped.

There probably are other valid partitions, these can be added
later, if known.

10 years agotop: miscellaneous accumulated changes to man document
Jim Warner [Wed, 7 May 2014 05:00:00 +0000 (00:00 -0500)]
top: miscellaneous accumulated changes to man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: miscellaneous accumulated changes to program code
Jim Warner [Wed, 7 May 2014 05:00:00 +0000 (00:00 -0500)]
top: miscellaneous accumulated changes to program code

. prevent any input recall overrun if window downsized
. adjust translation notes for true column hdr maximum

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agolibrary: reverting tmpfs subtraction from cached (18-FEB-2014)
Jaromir Capik [Wed, 30 Apr 2014 11:59:34 +0000 (13:59 +0200)]
library: reverting tmpfs subtraction from cached (18-FEB-2014)

The subtraction was marked as reinforcing the misconception,
that memory in the page cache can be considered free.
The Cached value is not a sum of page cache and tmpfs,
as the tmpfs memory lives in the page cache and therefore
it's an inseparable part of it.

10 years agotop: standardize <Esc> key support with prompted input
Jim Warner [Sun, 27 Apr 2014 05:00:00 +0000 (00:00 -0500)]
top: standardize <Esc> key support with prompted input

In release 3.3.6, some commands were equipped with the
concept of a 'default pid'. The initial implementation
meant that the intuitive <Esc> key would not always be
treated as one would expect under any well behaved UI.

This patch ensures the expected <Esc> key behavior of:
terminating user input while still making possible the
necessary distinction between 'no input' & 'defaults'.

Reference(s):
http://www.freelists.org/post/procps/top-Escape-doesnt-abort-kill-command

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: avoid a 'nan' when the delay interval is very low
Jim Warner [Sun, 27 Apr 2014 05:00:00 +0000 (00:00 -0500)]
top: avoid a 'nan' when the delay interval is very low

The granularity of /proc/uptime is fixed at hundredths
of a second. And, since we can cycle faster than that,
we are exposed to 'nan' when calculating elapsed time.

This commit will protect us from that outcome when the
delay interval has been set to an extremely low value.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agomisc: fix man doc spelling and grammar for translation
Jim Warner [Wed, 23 Apr 2014 05:00:04 +0000 (00:00 -0500)]
misc: fix man doc spelling and grammar for translation

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: swap opening quotes for back-tics in man document
Jim Warner [Wed, 23 Apr 2014 05:00:03 +0000 (00:00 -0500)]
top: swap opening quotes for back-tics in man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: minimize the usage of apostrophes in man document
Jim Warner [Wed, 23 Apr 2014 05:00:02 +0000 (00:00 -0500)]
top: minimize the usage of apostrophes in man document

In addition to eliminating numerous single quote usage
this commit also escaped '\' a few overlooked hyphens.

And some 'unformatted' spacings were adjusted as well.

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: refactor man document so as to allow translations
Jim Warner [Wed, 23 Apr 2014 05:00:01 +0000 (00:00 -0500)]
top: refactor man document so as to allow translations

The majority of changes in this commit are intended to
enable translation of top's man page. There were three
kinds of errors as seen by that po4a-updatepo program.

. a valid but unrecognized request concerning no-break
. an internally defined macro with a groff .de request
. occasional apostrophe at the beginning of some lines

With respect to the apostrophe, some have been changed
to back-tic since line placement could not be assured.
And other parts were re-flowed to avoid temptations to
escape as \' (technically an acute accent). Of course,
the opening back-tic with closing apostrophe looks odd
when ASCII, but should be rendered correctly as UTF-8.

It may yet be necessary to change the remaining single
'opening' quotes to back-tics as translation proceeds.
Should that become necessary, I intend to reduce quote
usage to the bare minimum throughout the man document.

There were also some formatting changes to enhance the
man2html output and then to other formats via htmldoc.
And, I wish to acknowledge that my meager groff skills
do not serve those programs very well at all. In other
words groff yet remains mostly incomprehensible to me.

Lastly a few content plus copyright updates were made.

Message(s):
. Unknown macro '.c2 `'. Remove it from the document, or refer to the Locale::Po4a::Man manpage to see how po4a can handle new macros.
. This page defines a new macro with '.de'. Since po4a is not a real groff parser, this is not supported.
. Unknown macro ''real time' scheduling priority.'. Remove it from the document, or refer to the Locale::Po4a::Man manpage to see how po4a can handle new macros.

Reference(s):
. oriiginal post/patch
http://www.freelists.org/post/procps/Translations-for-man-pages

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: update copyright dates plus 1 preprocessor change
Jim Warner [Fri, 25 Apr 2014 06:00:00 +0000 (00:00 -0600)]
top: update copyright dates plus 1 preprocessor change

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agotop: protect against distortion when system time reset
Jim Warner [Fri, 25 Apr 2014 05:00:00 +0000 (00:00 -0500)]
top: protect against distortion when system time reset

If a system's time is adjusted backwards, then elapsed
time could appear as negative. This yielded a negative
%CPU value. Alternately if zeros were suppressed ('0')
the result was a blank %CPU column. In both cases that
distortion would last for one display cycle or until a
user forced a display refresh via some keyboard input.

The original recommendation was trading gettimeofday()
for clock_gettime() using CLOCK_MONOTONIC. But on some
systems that might not be possible, forcing the use of
CLOCK_REALTIME instead. Not only would that complicate
the build system, but it may leave us with minus %CPU.

Another approach was to ensure that elapsed time could
never be negative. Of course, this produced distortion
of %CPU values but it would be proportionally correct.
This wasn't dissimilar to a distortion already present
should the time be adjusted forward or backward within
any 'remaining' top delay intervals. These aberrations
would be avoided with clock_gettime & CLOCK_MONOTONIC,
but that is a less than ideal solution as noted above.

This final solution, which originated down under, will
simply rely on the /proc/uptime seconds, which will be
immune to *any* tampering with the system clock. Thus,
we now have a fix for the distortion we didn't know we
suffered plus a negative %CPU that began this odyssey.

Thanks to:
sk.alvin.x@gmail.com, for the original effort
jcapik@redhat.com, for a heads up on CLOCK_MONOTONIC
csmall-procps@enc.com.au, for the best suggestion of all

Reference(s):
. original post/patch
http://www.freelists.org/post/procps/PATCH-top-use-clock-gettime-instead-of-gettimeofday
. heads up on CLOCK_MONOTONIC
http://www.freelists.org/post/procps/PATCH-top-use-clock-gettime-instead-of-gettimeofday,2
. the final solution
http://www.freelists.org/post/procps/PATCH-top-use-clock-gettime-instead-of-gettimeofday,11

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agofix url for rsync
Trần Ngọc Quân [Thu, 17 Apr 2014 07:12:01 +0000 (14:12 +0700)]
fix url for rsync

Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
10 years agol10n: po/update-potfile: add include/c.h
Trần Ngọc Quân [Wed, 16 Apr 2014 08:56:03 +0000 (15:56 +0700)]
l10n: po/update-potfile: add include/c.h

Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
10 years agosysctl: increase max supported line length of the conf file
Sami Farin [Fri, 14 Mar 2014 06:00:00 +0000 (00:00 -0600)]
sysctl: increase max supported line length of the conf file

I ran into this limit with net.ipv4.ip_local_reserved_ports ,
sysctl complained about the line after the long line, further
slowing down my error hunting.

Due to fgets usage, increase buffer size to 4096 chars with
minimum amount of code changes.

Signed-off-by: Sami Farin <hvtaifwkbgefbaei@gmail.com>
10 years agoMinor i18n fixes
Yuri Chornoivan [Mon, 3 Mar 2014 10:58:56 +0000 (21:58 +1100)]
Minor i18n fixes

Minor fixes that the translator (Yuri) has found in some of the
strings. You only know how many typos and thinkos you have when
someone is trying to translate it.

Signed-off-by: Craig Small <csmall@enc.com.au>
10 years agolibrary: properly handle memory used by tmpfs
Jakob Unterwurzacher [Tue, 18 Feb 2014 21:12:21 +0000 (22:12 +0100)]
library: properly handle memory used by tmpfs

tmpfs has become much more widely used since distributions use it for
/tmp (Fedora 18+). In /proc/meminfo, memory used by tmpfs is accounted
into "Cached" (aka "NR_FILE_PAGES",
 http://lxr.free-electrons.com/source/mm/shmem.c#L301 ).

The tools just pass it on, so what top, free and vmstat report as
"cached" is the sum of page cache and tmpfs.

free has the extremely useful "-/+ buffers/cache" output. However, now
that tmpfs is accounted into "cached", those numbers are way off once
you have big files in /tmp.

Fortunately, kernel 2.6.32 introduces "Shmem", which makes tmpfs memory
usage accessible from userspace (
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4b02108ac1b3354a22b0d83c684797692efdc395 ).

This patch substracts Shmem from Cached to get the actual page cache
memory. This makes both issues mentioned above disappear. For older
kernels, Shmem is not available (hence zero) and this patch is no-op.

Additionally:
* Update the man pages of free and vmstat to explain what is happening
* Finally drop "MemShared" from the /proc/meminfo parser, it has been
  dead for 10+ years and is only causing confusion ( removed in kernel
  2.5.54, see
  https://git.kernel.org/cgit/linux/kernel/git/tglx/history.git/commit/?id=fe04e9451e5a159247cf9f03c615a4273ac0c571 )

10 years agotop: avoid name conflict in the next version of stdlib
Jim Warner [Tue, 25 Feb 2014 06:00:00 +0000 (00:00 -0600)]
top: avoid name conflict in the next version of stdlib

Since its inception top has always used enumerators to
identify displayable fields. They've taken the form of
P_PID, etc. As it turns out, something has changed for
libc6-dev versions beyond 2.17-93 wherein 'P_PID' will
now be exposed via stdlib.h. I have not pinpointed the
exact cause but it may depend on header include order.

This patch just trades top's long standing 'P_' prefix
convention for that of 'EU_' (short for enumerator). I
cannot find *any* header under /usr/include/ currently
utilizing this particular three character combination.

And as a further safeguard top will henceforth include
'system' specific headers after the standard includes.

Reference(s):
http://www.freelists.org/post/procps/top-wont-compile-anymore

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agoAdded get-trans target to Makefile
Craig Small [Sat, 22 Feb 2014 00:34:53 +0000 (11:34 +1100)]
Added get-trans target to Makefile

The get-trans target rsyncs the latest copies of translation files
from the translation project. I put this target in because I always
forget the exact syntax of the command.

Signed-off-by: Craig Small <csmall@enc.com.au>
10 years agotop: restore the former behavior after stderr redirect
Jim Warner [Thu, 20 Feb 2014 06:00:00 +0000 (00:00 -0600)]
top: restore the former behavior after stderr redirect

When top originally responded to the potential libnuma
stderr write, the library was consistently called with
each refresh cycle. That, in turn, guaranteed that any
warning message would be seen at program end by virtue
of: 1) having been issued before the 2nd refresh cycle
and; 2) benefiting from inherited /dev/null buffering.

A later efficiency refactor meant the numa library may
not always be called with every refresh cycle. Rather,
it was only called if top was in one of two numa views
(the '2' or '3' toggles). That, in turn, resulted in a
loss of any warning message at program end unless numa
mode had been preserved in the rcfile. In other words,
if top was started normally then a single cycle stderr
redirect would have long passed by the time the '2' or
'3' toggle was activated. The warning message actually
was spewed but quickly lost to the full screen refresh
which follows all keyboard interactions with the user.

This commit simply moves the restoration of our stderr
redirect to program end (instead of that first display
refresh). Now, any libnuma stderr warning message will
appear as the concluding output line upon quitting top
without regard to when any numa mode view was invoked.

And since this technique might be useful in some other
context (as an example of how to 'buffer' stderr) it's
been generalized with its own #define. But to maximize
its usefulness, the original redirect should be issued
much earlier in pgm startup than top has chosen to do.

Reference(s):
. original libnuma stderr response (msg seen)
commit 35dc6dcc49cc9cf8cff4300cb03a38dbe44c05db
. numa refractoring for efficiency (msg lost)
commit f12c0d5c6e84f9409ac3a73c066841a8ff5aab0b

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agovmstat: Fixing format-security flaws
Jaromir Capik [Wed, 5 Feb 2014 16:09:45 +0000 (17:09 +0100)]
vmstat: Fixing format-security flaws

Previously the headers were printed directly without
the format specifier. That way is considered insecure
and leads to build errors with -Werror=format-security
flag set.

10 years agowatch: Don't leak extra fds to the child
Josh Stone [Tue, 4 Feb 2014 17:46:58 +0000 (09:46 -0800)]
watch: Don't leak extra fds to the child

Once the write side of the pipe has been duped to stdout for the child,
the original pipefd is no longer needed, so it can be closed to avoid
leaking to the child.

The leak can easily be seen with "watch ls -l /proc/self/fd", but I
found this due to "watch lvs" diagnosing itself:

    File descriptor 4 (pipe:[3163616]) leaked on lvs invocation.

Signed-off-by: Josh Stone <jistone@redhat.com>
10 years agovmstat: Support for timestamps with '-t' & fix for '-wd'
Jaromir Capik [Tue, 4 Feb 2014 18:10:42 +0000 (19:10 +0100)]
vmstat: Support for timestamps with '-t' & fix for '-wd'

From now the vmstat can append a timestamp to each line in the
VMSTAT and DISKSTAT mode. You can achieve that with the '-t'
switch.
The '-w' switch now works in the DISKSTAT mode too.

10 years agoUpdate help files
Craig Small [Sun, 2 Feb 2014 07:13:01 +0000 (18:13 +1100)]
Update help files

Benno Schulenberg suggested some changes to the help messages
to provide some consistency and clarity for both the users and
translators of procps.

The test needed to be updated as the pmap output changed too.

Signed-off-by: Craig Small <csmall@enc.com.au>
10 years agoMerge branch 'merge-requests/23'
Craig Small [Thu, 30 Jan 2014 11:12:28 +0000 (22:12 +1100)]
Merge branch 'merge-requests/23'

10 years agopgrep fails to show full command line with -au
Elliott Forney [Thu, 30 Jan 2014 10:36:26 +0000 (21:36 +1100)]
pgrep fails to show full command line with -au

pgrep does not show the full command line when the -a and -u flags are
combined. The -a flag is ignored when the -u flag is used as well.

In addition, the supplied patch by Elliot did not fix the problem
when invert flag ( -v ) was used; a very small tweak to the patch
fixed this problem as well. This problem existed before.

Signed-off-by: Craig Small <csmall@enc.com.au>
10 years agoPID -2 to -9 for kill too
Craig Small [Wed, 29 Jan 2014 11:28:02 +0000 (22:28 +1100)]
PID -2 to -9 for kill too

Commit 4359cf069819d9fb53493933e00d9af5c37bced5 restored kill's ability
to kill PID -1. This however left PIDs -2 to -9 (or rather process
groups 2 to 9) still having this problem. The check is now generically
looking for a digit and parses it correctly.

10 years agoCheck for presence of disks in vmstat
Craig Small [Wed, 29 Jan 2014 11:22:11 +0000 (22:22 +1100)]
Check for presence of disks in vmstat

vmstat -d or vmstat -p would crash mysteriously under different
circumstances. The problem was eventually tracked down to /sys not
being mounted which meant is_disk() always returned false.
The partition would then be attempted to be linked to a non-existent
disk causing a segfault.

vmstat will now not link to a disk if none exists.
The change in testing will skip those tests when /sys/block doesn't
exist.

Many thanks to Daniel Schepler for his analysis and suggestions.

Bug-Debian: http://bugs.debian.org/736628

10 years agokill for PID -1 restored
Craig Small [Tue, 28 Jan 2014 11:35:26 +0000 (22:35 +1100)]
kill for PID -1 restored

Both the man page and the shell builtin kill mention you can
use PID -1, which means nuke everything you can get at.
Alas this "fun" option was missing and the only way to get
around it was with "kill -HUP -- -1".

This small change means kill -HUP -1 is back for all those
destructive types. The error was introduced when the argument
parser was fixed for other problems.

Thanks to Mike for pointing this out.

Signed-off-by: Craig Small <csmall@enc.com.au>
10 years agolibrary: skip replacement of trailing '\0' in read_unvectored()
Jaromir Capik [Fri, 24 Jan 2014 17:07:34 +0000 (18:07 +0100)]
library: skip replacement of trailing '\0' in read_unvectored()

Under some circumstances the ksh shell doesn't fork new processes
when executing scripts and the script is interpreted by the
parent process. That makes the execution faster, but it means
ksh needs to reuse the /proc/PID/cmdline for the new script name
and arguments while the file length needs to stay untouched.
The fork is skipped only when the new cmdline is shorter than
the parent's cmdline and the rest of the file is filled
with '\0'. This is perfectly ok until we try to read the cmdline
of such process. As the read_unvectored() function replaces
all zeros with chosen separator, these trailing zeros are replaced
with spaces in case of the ps tool. Consequently it appends
multiple spaces at the end of the arguments string even when these
zeros do not represent any separators and therefore shouldn't
be replaced.
With this commit the read_unvectored() function skips the
replacement of trailing zeros and separates valid content only.

Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1057600

10 years agovmstat: wide output still not wide enough?
Jaromir Capik [Mon, 20 Jan 2014 18:59:39 +0000 (19:59 +0100)]
vmstat: wide output still not wide enough?

8 digits per memory column is apparently still too low
for systems with 128TB of RAM. Anyway, setting the limit
to 999TB (12 digits) must be sufficient for now as it
produces wide gaps on "regular" computers.
This commit also increases the number of digits per cpu
columns from 2 to 3 as some of them can hit the 100%
maximum in corner cases.

10 years agotop: provide for discontinuous (not active) NUMA nodes
Jim Warner [Sun, 5 Jan 2014 06:00:00 +0000 (00:00 -0600)]
top: provide for discontinuous (not active) NUMA nodes

Apparently there are occasions when NUMA nodes may not
always be contiguous. Under such conditions nodes that
were not used would still occupy precious Summary Area
space showing 100% idle, under the '2' command toggle.

With this commit top will no longer display numa nodes
that have no associated cpu when the '2' toggle is on.
But just in case we wish to return to former behavior,
a new #define called OFF_NUMASKIP has been introduced.

And as an aside, a recent refactor mentioned below set
the stage for this patch to be 'self-tuning'. In other
words, if an inactive/non-displayed node should become
active (if even possible), then top will begin showing
such a node automatically with the next screen update.

Unfortunately, all inactive nodes now 'suppressed' are
still accessible via the '3' command. Those nodes will
just be displayed as empty (no associated cpus shown).
This is not really a top problem but more of a libnuma
and/or user deficiency. The library lacks the means to
validate a node id and the user then input a node that
was not even shown under a '2' toggle Summary display.

( too bad libnuma does not offer an 'is_node_active' )
( type function so top could warn a user when such a )
( discontinuous node was requested using his '3' cmd )

( sure, top could achieve this objective himself but )
( that would require making yet another array global )
( which i'm just not in the mood to do - besides, we )
( have already made enough concessions to libnuma.so )

Lastly, an existing #define (PRETEND_NUMA) was changed
to 'disable' node #1 so as to simulate a discontinuous
node. This allows testing of the '2' and '3' commands.

Reference(s):
http://www.spinics.net/lists/util-linux-ng/msg08671.html
. set stage for self tuning
commit f12c0d5c6e84f9409ac3a73c066841a8ff5aab0b

Signed-off-by: Jim Warner <james.warner@comcast.net>
10 years agops: ignore SIGCONT
Craig Small [Tue, 14 Jan 2014 11:23:58 +0000 (22:23 +1100)]
ps: ignore SIGCONT

SIGCONT is a continue signal.  It seems that some zsh setups can send
this signal, causing ps to abort.  This is not what "continue" means.
This change just uses the default handler which will continue a stopped
process.

References:
  http://bugs.debian.org/732410
  http://www.zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=32251

Signed-off-by: Craig Small <csmall@enc.com.au>
10 years agosysctl: Fixing memory leaks in PreloadSystem()
Jaromir Capik [Thu, 2 Jan 2014 18:49:36 +0000 (19:49 +0100)]
sysctl: Fixing memory leaks in PreloadSystem()

10 years agopgrep: Fixing memory leak in do_regcomp()
Jaromir Capik [Thu, 2 Jan 2014 17:39:27 +0000 (18:39 +0100)]
pgrep: Fixing memory leak in do_regcomp()

10 years agolibrary: fixing uninitialized variable 'pos' in whattime.c
Jaromir Capik [Thu, 2 Jan 2014 17:21:31 +0000 (18:21 +0100)]
library: fixing uninitialized variable 'pos' in whattime.c

11 years agoSplit help lines to help translators
Craig Small [Fri, 27 Dec 2013 22:25:39 +0000 (09:25 +1100)]
Split help lines to help translators

To assist translators, the help lines are split so that each translation
chunk has one option. This gives bonus of if we add or change an option,
only that option remains untranslated rather than the entire help block.

Reference:
  http://www.freelists.org/post/procps/procpsng-for-Translation-Project,1

Signed-off-by: Craig Small <csmall@enc.com.au>
11 years agosysctl --system loads default config file
Craig Small [Fri, 27 Dec 2013 12:08:14 +0000 (23:08 +1100)]
sysctl --system loads default config file

Commit cdca71e94506fbb921ab2c626be3ad05c4287498 fixed
the loading the sysctl.conf file, but had the logic
for checking the file exists reversed incorrectly.

11 years agotop: do not forget the fscanf %s terminating null byte
Jim Warner [Tue, 3 Dec 2013 21:00:00 +0000 (15:00 -0600)]
top: do not forget the fscanf %s terminating null byte

Reference(s):
http://www.freelists.org/post/procps/procpsng-339-defects-found

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agoUpdate the library version to 3:0:0 v3.3.9
Craig Small [Tue, 3 Dec 2013 11:16:18 +0000 (22:16 +1100)]
Update the library version to 3:0:0

We have had some API changes which means the library version needs to
be incremented.

11 years agoFixed check for vmstat with stolen time
Craig Small [Tue, 3 Dec 2013 11:08:30 +0000 (22:08 +1100)]
Fixed check for vmstat with stolen time

Commit a8a4a4f added stolen time to vmstat, but broke the checks as
we have another column. This commit fixes the checks

11 years agotop: follow usual name conventions for global variable
Jim Warner [Sat, 30 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: follow usual name conventions for global variable

A recent change involving a one cycle stderr redirect,
to handle a libnuma potential transgression, failed to
follow normal global variable naming conventions. This
patch will capitalize the 1st letter of 'Stderr_save'.

Reference(s):
commit 35dc6dcc49cc9cf8cff4300cb03a38dbe44c05db

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: do not lie about purported alphabetical orderings
Jim Warner [Fri, 29 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: do not lie about purported alphabetical orderings

Excluding those special X_XON/X_XOF enums, which might
not even be present, restore strict collating order of
all the case labels in the task_show switch statement.

Also, adjust a few sort callbacks for the same reason.

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agopmap: Including -p in the man page
Jaromir Capik [Tue, 26 Nov 2013 12:45:22 +0000 (13:45 +0100)]
pmap: Including -p in the man page

Previously the pmap man page was missing the -p switch.
This commit fixes that.

11 years agopmap: Including -c -C -n -N in the man page
Jaromir Capik [Tue, 26 Nov 2013 12:31:44 +0000 (13:31 +0100)]
pmap: Including -c -C -n -N in the man page

Previously the pmap man page was missing the -c -C -n -N switches.
This commit fixes that.

11 years agovmstat: support for time stolen from virtual machines
Jaromir Capik [Mon, 25 Nov 2013 16:39:14 +0000 (17:39 +0100)]
vmstat: support for time stolen from virtual machines

Surprisingly the code for the 'st' column was added in the past,
but wasn't enabled. The vmstat manual already contains the 'st'
column and this commit finally enables the feature.

11 years agovmstat: -w switch for wider output
Jaromir Capik [Mon, 25 Nov 2013 15:56:10 +0000 (16:56 +0100)]
vmstat: -w switch for wider output

This is a rework of the merge request #5 that unconditionally
forced the output to cross the 80 chars border.
With this commit users can switch to the wide output mode
with the -w option.

11 years agoNEWS: updated with the next procps-ng release of 3.3.9
Jim Warner [Fri, 15 Nov 2013 06:00:00 +0000 (00:00 -0600)]
NEWS: updated with the next procps-ng release of 3.3.9

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: increase the maximum number of displayable fields
Jim Warner [Wed, 13 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: increase the maximum number of displayable fields

The recent addition of namespaces, combined with those
potential suse out-of-memory fields, means that we are
close to the maximum number of fields poor ol' top can
display. Imagine, the really old top was limited to 26
fields (28 with the suse hack) and this top had neared
the version 'g' rcfile limits which were a healthy 55.

This patch adds another 15 fields to the maximum while
making it even easier to increase in the future. Also,
top still silently accommodates older config files all
the way back to the original pre-ng version top-3.2.8!

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: expand the man page to include namespaces support
Jim Warner [Mon, 11 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: expand the man page to include namespaces support

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: expand this program to include namespaces support
Jim Warner [Mon, 11 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: expand this program to include namespaces support

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agolibrary: normalize recently added namespaces interface
Jim Warner [Sun, 10 Nov 2013 06:00:00 +0000 (00:00 -0600)]
library: normalize recently added namespaces interface

While 'invisible' thread subdirectories are accessible
under /proc/ with stat/opendir calls, they have always
been treated as non-existent, as is true with readdir.

This patch trades the /proc/#/ns access convention for
the more proper /proc/#/task/#/ns approach when thread
access is desired. In addition some namespace code has
been simplified and made slightly more efficient given
the calloc nature of proc_t acquisition and its reuse.

Reference(s):
commit a01ee3c0b32d4c39aa83066ed61103343469527e

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: eliminate yet more gcc subscript resolution bloat
Jim Warner [Sat, 9 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: eliminate yet more gcc subscript resolution bloat

This patch is inspired by the 'minimize numa overhead'
patch. It trades the use of subscripts for pointers to
avoid gcc repeated subscript offset calculation bloat.

Now, throughout the cpus_refresh function, a subscript
will be resolved just once & this will (dramatically?)
reduce the path-length taken for each and every frame!

For example, a non-optimized compilation could produce
400+ fewer machine instructions through pointer usage.

[ ok, optimized compiles only save 18+ instructions! ]

Lastly, any residual 'symmetry only' crap is now gone!

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: minimize the statistics overhead for numa support
Jim Warner [Fri, 8 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: minimize the statistics overhead for numa support

A recent libnuma potential corruption problem solution
has caused me to reevaluate some associated numa logic
for efficiency. Here is a summary of the problems that
exist with current libnuma/user possible interactions:

. Whenever the numa library was present extra overhead
would always be incurred in maintaining the node stats
even when the '2' or '3' commands were not being used.

. As part of such overhead a separate loop was used to
reinitialize each cpu/node structure with each display
cycle so that prior accumulated totals were preserved.
Again, it didn't matter if numa data was really shown.

This commit attempts to refocus on the 'critical path'
costs in a running top by optimizing for the occasions
when numa node data is not being displayed. Under such
conditions, no extra overhead will be incurred whether
or not a distribution has the libnuma library present.

To achieve this goal, some additional overhead will be
incurred, but only when actually displaying numa data.
And all such new costs have been minimized in spite of
the gcc inclination to duplicate subscript resolution.

Reference(s):
commit 24bd950cb2e1722d459461f0f9c0c30a4b9ffdaa

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: add some flexibility to dlopen() for numa support
Jim Warner [Thu, 7 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: add some flexibility to dlopen() for numa support

A recent libnuma potential corruption problem solution
suggests that libnuma could change in the future so as
to not spew to stderr. This then raises a question how
top could exploit any such library change since we are
currently locked into version #1 of the library by way
of our dlopen("libnuma.so.1", RTLD_LAZY) runtime call.

While not an ultimate solution, this commit will first
try for the most recent version of that library during
top's startup before trying the original libnuma.so.1.
We do this via the unqualified library soname symlink.

For this new dlopen() call to succeed, technically the
numa 'devel' package would usually have been required,
but that's not always true with every distro. And when
the libnuma.so symlink isn't present, it can always be
manually added should a newer & better behaved library
arrive & users tire of the stderr warning at top exit.

Reference(s):
commit 24bd950cb2e1722d459461f0f9c0c30a4b9ffdaa

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: expand on column highlight quirks in man document
Jim Warner [Wed, 6 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: expand on column highlight quirks in man document

Confession is supposed to be good for the sole, right?

After a senior moment regarding the 'x' toggle quirks,
and thinking top had somehow regressed, I concluded an
additional explanatory note might well be appropriate.

Those quirks were already documented under the 5d & 5e
topics. But there was no such caution documented under
the 'x' command explanation itself, found in topic 4c.

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agotop: fix miscellaneous spelling errors in man document
Jim Warner [Tue, 5 Nov 2013 06:00:00 +0000 (00:00 -0600)]
top: fix miscellaneous spelling errors in man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agopidof: fixing compiller warnings
Jaromir Capik [Mon, 4 Nov 2013 15:26:19 +0000 (16:26 +0100)]
pidof: fixing compiller warnings

Removing unused variable and adding explicit pid_t retype in printf.

11 years agotop: address some potential libnuma display corruption
Jim Warner [Sun, 3 Nov 2013 05:00:00 +0000 (00:00 -0500)]
top: address some potential libnuma display corruption

There is a chance that the libnuma library may corrupt
top's display with some stderr warning messages in the
event something under /sys/devices/system/node/ cannot
be accessed. And, while 2 overridable 'weak' functions
are provided to alter such behavior, we can't use them
since top dynamically links to the library via dlopen.

This commit will redirect stderr to '/dev/null' during
just the first screen display cycle. Thus we can avoid
the corruption which would have remained visible until
the underlining screen row's data had finally changed.

Lastly, this patch should allow such a library warning
to actually appear when one finally exits our program.

[ i think the libnuma folks should consider changing ]
[ the error/warning interfaces to accommodate dlopen ]
[ rather than forcing something like the ugly kludge ]
[ we have employed or libnuma dependency on everyone ]

Reference(s):
https://bugzilla.redhat.com/show_bug.cgi?id=998678

Signed-off-by: Jim Warner <james.warner@comcast.net>
11 years agobuild-sys: treate new pidof the same as other products
Jim Warner [Sat, 2 Nov 2013 06:00:00 +0000 (00:00 -0600)]
build-sys: treate new pidof the same as other products

Signed-off-by: Jim Warner <james.warner@comcast.net>