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