On Mon, 11 Feb 2013, Richard Lowe wrote:
I've never used the profiler you're using.
The 'spot' profiler comes with Sun Studio 12.3 compiler. It is
written in Perl scripts around Solaris's normal profiling utilities.
It seems to have bit-rotted and is not properly maintained even though
it is delivered with the compiler. I will look into using the newer
performance analyzer tools that come with the Studio compiler.
I would think if you're in vmem_hash_delete from there, you must be in
the umem implementation of it.
Are you sure it's burning cycles? The way I'm reading the output
makes it appear almost negligible.
I agree that it does not look like it is burning cycles. I am mostly
worried about latencies not attributed to the program (e.g. in the VM
system) or to "system" time.
Program performance is virtually identical regardless of being
compiled with GCC or the Studio compiler.
Do you have data from a profiler you _do_ trust? Given the doubt that
the one you're using "is working correctly".
I will investigate further. Hopefully there is a profiler which still
works properly on Illumos on modern hardware.
Are you using umem normally, or do you have any of the debugging
features enabled?
Umem is being used normally as an improved malloc and debugging is not
enabled.
Are you making allocations that would bypass the quantum cache?
(large, I think memalign'd but am not sure, etc.), and would thus send
us legitimately down this path even if it _is_ a hog.
The program is using posix_memalign() (with 64-byte alignment) for
many of its allocations in order to avoid cache-line thrashing. The
allocation sizes are also rounded up to 64-byte alignment. It uses
ordinary malloc/realloc for the largest data allocations.
This is what a Linux memory profiler says about how the program
allocates memory:
Memory usage summary: heap total: 5095337925, heap peak: 5031841357, stack
peak: 19680
total calls total memory failed calls
malloc| 8145 5095337669 0
realloc| 1 256 0 (nomove:0, dec:0, free:0)
calloc| 0 0 0
free| 10543 5095336997
Histogram for block sizes:
16-31 244 2% ========
32-47 725 8% =========================
96-111 1 <1%
112-127 725 8% =========================
128-143 202 2% =======
256-271 719 8% =========================
544-559 241 2% ========
560-575 2 <1%
768-783 720 8% =========================
2048-2063 718 8% =========================
4096-4111 1434 17% ==================================================
6864-6879 725 8% =========================
8192-8207 717 8% =========================
8528-8543 490 6% =================
large 483 5% ================
Bob
--
Bob Friesenhahn
[email protected], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/
-------------------------------------------
illumos-discuss
Archives: https://www.listbox.com/member/archive/182180/=now
RSS Feed: https://www.listbox.com/member/archive/rss/182180/21175430-2e6923be
Modify Your Subscription:
https://www.listbox.com/member/?member_id=21175430&id_secret=21175430-6a77cda4
Powered by Listbox: http://www.listbox.com