I've submitted a bug related to this problem:
http://bugs.opensolaris.org/view_bug.do?bug_id=6801244.  The gist of
this problem is that Solaris calculates the VM size of a process when
asked, i.e., when some utility like ps(1) or prstat(1M) reads
/proc/<pid>/psinfo.  This can be a problem on servers with many
processes with large numbers of address space segments, as the
relevant function, rm_assize(), does a linear traversal of the AS
segments.  I've seen ps(1) take 30 seconds or more (on an M9000) and
prstat(1M) spending 100% of its time in sys, effectively stealing a
CPU.  Given that everyone starts running these commands when problems
pop up, this can severely impact performance.

(And note that this doesn't just impact M9000's.  Jarod Jenson and I
have started seeing this to a lesser degree on smaller boxes.)

I've made the code changes to maintain the value in an extra member in
struct as, a_asize, and update the value in as_map(), as_unmap(),
as_dup(), as_fault(), et al.  I've posted a webrev for this change
here:  http://cr.opensolaris.org/~cmynhier/6801244/.


I'd welcome any thoughts, code reviews, and offers of sponsorship to
get this putback.

Thanks,
Chad
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to