Profiling was "Re: [sldev] Multithreading, Garbage collection, Caching"

Laurent Laborde kerdezixe at gmail.com
Sun Mar 18 09:58:27 PDT 2007


Just switched to First Look, and yes, it's multi-threaded :)
I Run a mac book pro, dual core 2.16Ghz with ATI X1600, 256MB

in attachment, a 3s sample of application time spent in secondlife. (in%)
What this weird stuff mean ?

0) I'm not an expert in profiling ;)
1) Most thread are just waiting.
2) According to my lil' GL profiling, around 10% of the application
time is spent in openGL. From time to time, the CPU is waiting for the
GPU. (i'll mail about that later.)
3) What you don't see here is that 30% of my cpu time is spent by
lookupd (But it look like this is because of the profiling tool, not
because of secondlife. I'll try to find why)
4) 1 of my core is running at 100% while the other one is almost sleeping.
5) around 60% of openGL Time is spent in GLDrawRangeElement
5) 69% of the time is spent in display(int, float int)
5a) 40% in  LLPipeline::renderGeom(LLCamera&)
5aa) 10% LLDrawPoolSimple::render(int)
5aaa) 7% LLRenderPass::renderTexture(unsigned, unsigned)
5ab) 8% LLDrawPoolAlphaPostWater::render(int)
5ac) 8% LLDrawPoolAvatar::render(int)
5b) 9% LLPipeline::stateSort(LLCamera&)
5c) 7% render_ui_and_swap() (with 5% for the UI, 2% for the
GLSwapBuffer) (WTF ?!)
6) 28% in  idle()

-- 
Kerunix Flan
-------------- next part --------------
Analysis of sampling pid 1451 every 10.000000 milliseconds
Call graph:
    100 Thread_0f07
      100 start
        100 _start
          100 main
            100 main_loop()
              69 display(int, float, int)
                40 LLPipeline::renderGeom(LLCamera&)
                  10 LLDrawPoolSimple::render(int)
                    7 LLRenderPass::renderTexture(unsigned, unsigned)
                      7 LLRenderPass::pushBatch(LLDrawInfo&, unsigned, int)
                        4 glDrawRangeElements
                          4 gleDrawArraysOrElements_VBO_Exec
                            2 gldPageoffBuffer
                              1 gldDestroyVertexArray
                                1 io_connect_map_memory
                                  1 mach_msg_trap
                                    1 mach_msg_trap
                              1 gldPageoffBuffer
                            1 gldGetQueryInfo
                              1 gldGetQueryInfo
                            1 gldUpdateDispatch
                              1 gldFlushVertexArray
                                1 gldPageoffBuffer
                                  1 gldPageoffBuffer
                        2 LLVertexBuffer::setBuffer(unsigned)
                          1 LLVertexBuffer::setupVertexBuffer(unsigned) const
                            1 LLVertexBuffer::setupVertexBuffer(unsigned) const
                          1 LLVertexBuffer::unmapBuffer()
                            1 LLVertexBuffer::useVBOs() const
                              1 LLVertexBuffer::useVBOs() const
                        1 LLRenderPass::pushBatch(LLDrawInfo&, unsigned, int)
                    3 LLRenderPass::renderActive(unsigned, unsigned, int)
                      3 LLRenderPass::renderGroup(LLSpatialGroup*, unsigned, unsigned, int)
                        3 LLRenderPass::pushBatch(LLDrawInfo&, unsigned, int)
                          3 glDrawRangeElements
                            1 gleDrawArraysOrElements_IMM_Exec
                              1 gldUpdateDispatch
                                1 gldGetQueryInfo
                                  1 gldGetString
                                    1 gldGetString
                                      1 gldGetString
                                        1 gldGetString
                                          1 gldGetString
                            1 gleDrawArraysOrElements_VBO_Exec
                              1 gldUpdateDispatch
                                1 gldFlushVertexArray
                                  1 gldPageoffBuffer
                                    1 gldPageoffBuffer
                                      1 gldDestroyBuffer
                                        1 io_connect_method_structureI_structureO
                                          1 mach_msg_trap
                                            1 mach_msg_trap
                            1 memset
                              1 memset
                  8 LLDrawPoolAlphaPostWater::render(int)
                    8 LLDrawPoolAlpha::render(std::vector<LLSpatialGroup*, std::allocator<LLSpatialGroup*> >&)
                      8 LLDrawPoolAlpha::renderAlpha(unsigned, std::vector<LLSpatialGroup*, std::allocator<LLSpatialGroup*> >&)
                        8 LLDrawPoolAlpha::renderGroupAlpha(LLSpatialGroup*, unsigned, unsigned, int)
                          8 glDrawRangeElements
                            7 gleDrawArraysOrElements_IMM_Exec
                              6 gleDrawArraysOrElements_Core
                                3 gleBeginPrimitiveTCLFunc
                                  3 gldInitDispatch
                                    3 gldDestroyVertexArray
                                      3 io_connect_map_memory
                                        3 mach_msg_trap
                                          3 mach_msg_trap
                                1 0x2d18fa8d
                                  1 0x2d18fa8d
                                1 0x2d18fb5c
                                  1 0x2d18fb5c
                                1 gleFlushPrimitiveTCLFunc
                                  1 gldInitDispatch
                                    1 gldDestroyVertexArray
                                      1 io_connect_map_memory
                                        1 mach_msg_trap
                                          1 mach_msg_trap
                              1 gldUpdateDispatch
                                1 gldGetQueryInfo
                                  1 gldGetString
                                    1 gldGetString
                                      1 gldGetString
                                        1 gldGetString
                            1 gleDrawArraysOrElements_VBO_Exec
                              1 gldUpdateDispatch
                                1 gldGetQueryInfo
                                  1 gldGetString
                                    1 gldGetString
                                      1 gldGetString
                                        1 gldGetString
                                          1 gldGetString
                  8 LLDrawPoolAvatar::render(int)
                    8 LLDrawPoolAvatar::renderAvatars(LLVOAvatar*, int)
                      8 LLVOAvatar::renderSkinned(e_avatar_render_pass)
                        5 LLViewerJoint::render(float, int)
                          5 LLViewerJoint::render(float, int)
                            4 LLViewerJointMesh::drawShape(float, int)
                              4 llDrawRangeElements(unsigned long, unsigned long, unsigned long, long, unsigned long, void const*)
                                4 glDrawRangeElements
                                  4 gleDrawArraysOrElements_IMM_Exec
                                    4 gleDrawArraysOrElements_Core
                                      2 gleFlushPrimitiveTCLFunc
                                        2 gldInitDispatch
                                          2 gldDestroyVertexArray
                                            2 io_connect_map_memory
                                              2 mach_msg_trap
                                                2 mach_msg_trap
                                      1 0x2d1a0f45
                                        1 0x2d1a0f45
                                      1 0x2d1a0f4a
                                        1 0x2d1a0f4a
                            1 LLViewerJoint::render(float, int)
                        3 LLVOAvatar::renderTransparent()
                          3 LLViewerJoint::render(float, int)
                            3 LLViewerJoint::render(float, int)
                              3 LLViewerJointMesh::drawShape(float, int)
                                3 llDrawRangeElements(unsigned long, unsigned long, unsigned long, long, unsigned long, void const*)
                                  3 glDrawRangeElements
                                    3 gleDrawArraysOrElements_IMM_Exec
                                      2 gleDrawArraysOrElements_Core
                                        1 0x2d1a0f1f
                                          1 0x2d1a0f1f
                                        1 gleBeginPrimitiveTCLFunc
                                          1 gldInitDispatch
                                            1 gldDestroyVertexArray
                                              1 io_connect_map_memory
                                                1 mach_msg_trap
                                                  1 mach_msg_trap
                                      1 gldUpdateDispatch
                                        1 gldGetTextureLevel
                                          1 gldCreateQuery
                                            1 gldCreateQuery
                  6 LLDrawPoolTree::render(int)
                    6 LLDrawPoolTree::renderTree(int)
                      6 LLVOTree::drawBranchPipeline(unsigned*, int, int, unsigned short, unsigned short, float, float, float, float, float)
                        5 LLVOTree::drawBranchPipeline(unsigned*, int, int, unsigned short, unsigned short, float, float, float, float, float)
                          4 LLVOTree::drawBranchPipeline(unsigned*, int, int, unsigned short, unsigned short, float, float, float, float, float)
                            2 LLVOTree::drawBranchPipeline(unsigned*, int, int, unsigned short, unsigned short, float, float, float, float, float)
                              1 glDrawElements
                                1 gleDrawArraysOrElements_VBO_Exec
                                  1 gldUpdateDispatch
                                    1 gldGetQueryInfo
                                      1 gldGetString
                                        1 gldGetString
                                          1 gldGetString
                                            1 gldGetString
                                              1 gldDestroyVertexArray
                                                1 io_connect_map_memory
                                                  1 mach_msg_trap
                                                    1 mach_msg_trap
                              1 glRotatef
                                1 glRotatef_Exec
                                  1 cosl
                                    1 cosl
                            2 glDrawElements
                              2 gleDrawArraysOrElements_VBO_Exec
                                2 gldUpdateDispatch
                                  1 gldGetQueryInfo
                                    1 gldGetString
                                      1 gldGetString
                                  1 gldUpdateDispatch
                          1 glDrawElements
                            1 memset
                              1 memset
                        1 glDrawElements
                          1 gleDrawArraysOrElements_VBO_Exec
                            1 gldUpdateDispatch
                              1 gldGetQueryInfo
                                1 gldGetString
                                  1 gldGetString
                                    1 gldGetString
                                      1 gldGetString
                                        1 gldGetString
                  3 LLPipeline::doOcclusion(LLCamera&)
                    3 LLSpatialPartition::doOcclusion(LLCamera*)
                      1 glDrawRangeElements
                        1 gleDrawArraysOrElements_IMM_Exec
                          1 gleDrawArraysOrElements_Core
                            1 0x2d0c3920
                              1 0x2d0c3920
                      1 glEndQueryARB
                        1 glEndQuery_Exec
                          1 gldGetString
                            1 gldGetString
                              1 gldGetString
                      1 glFlush
                        1 gldFlush
                          1 gldDestroyVertexArray
                            1 io_connect_map_memory
                              1 mach_msg_trap
                                1 mach_msg_trap
                  3 render_hud_elements()
                    2 LLWorld::renderPropertyLines()
                      2 LLViewerParcelOverlay::renderPropertyLines()
                        2 glBegin
                          1 __i686.get_pc_thunk.bx
                            1 __i686.get_pc_thunk.bx
                          1 gleBeginPrimitiveTCLFunc
                            1 gldInitDispatch
                              1 gldInitDispatch
                    1 LLHUDObject::renderAll()
                      1 LLHUDText::render()
                        1 LLHUDText::renderText(int)
                          1 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)
                            1 free
                              1 szone_size
                                1 szone_size
                  1 LLDrawPoolStars::render(int)
                    1 glDrawElements
                      1 gleDrawArraysOrElements_IMM_Exec
                        1 gleDrawArraysOrElements_Core
                          1 0x2d09d67d
                            1 0x2d09d67d
                  1 LLVOSky::updateFog(float)
                    1 LLVOSky::updateFog(float)
                10 LLPipeline::updateGeom(float)
                  9 LLDrawable::updateGeometry(int)
                    6 LLVOVolume::updateGeometry(LLDrawable*)
                      5 LLVolumeImplFlexible::doUpdateGeometry(LLDrawable*)
                        3 LLVolume::createVolumeFaces()
                          2 LLVolumeFace::createSide()
                            1 LLVolumeFace::createSide()
                            1 calc_binormal_from_triangle(LLVector3 const&, LLVector2 const&, LLVector3 const&, LLVector2 const&, LLVector3 const&, LLVector2 const&)
                              1 calc_binormal_from_triangle(LLVector3 const&, LLVector2 const&, LLVector3 const&, LLVector2 const&, LLVector3 const&, LLVector2 const&)
                          1 free
                            1 szone_free
                              1 szone_free
                        1 LLVOVolume::genBBoxes(int)
                          1 LLVOVolume::updateTextures()
                            1 LLVOVolume::getTextureVirtualSize(LLFace*)
                              1 LLFace::getPositionAgent() const
                                1 LLFace::getPositionAgent() const
                        1 LLVolume::regen()
                          1 LLVolume::generate()
                            1 operator*(LLVector3 const&, LLQuaternion const&)
                              1 operator*(LLVector3 const&, LLQuaternion const&)
                      1 LLVOVolume::setVolume(LLVolumeParams const&, int, bool)
                        1 LLPrimitive::setVolume(LLVolumeParams const&, int, bool)
                          1 LLVolumeParams::operator==(LLVolumeParams const&) const
                            1 LLPathParams::operator==(LLPathParams const&) const
                              1 LLPathParams::operator==(LLPathParams const&) const
                    2 LLVOPartGroup::updateGeometry(LLDrawable*)
                      1 LLDrawable::setNumFacesFast(int, LLFacePool*, LLViewerImage*)
                        1 LLDrawable::addFace(LLFacePool*, LLViewerImage*)
                          1 operator new(unsigned long)
                            1 malloc
                              1 szone_malloc
                                1 szone_malloc
                      1 LLVOPartGroup::updateGeometry(LLDrawable*)
                    1 LLVOClouds::updateGeometry(LLDrawable*)
                      1 LLFace::setTEOffset(int)
                        1 LLFace::setTEOffset(int)
                  1 LLPipeline::updateMovedList(std::vector<LLPointer<LLDrawable>, std::allocator<LLPointer<LLDrawable> > >&)
                    1 LLSpatialBridge::updateMove()
                      1 LLSpatialPartition::move(LLDrawable*, LLSpatialGroup*, int)
                        1 LLSpatialGroup::updateInGroup(LLDrawable*, int)
                          1 LLSpatialBridge::updateSpatialExtents()
                            1 LLSpatialGroup::rebound()
                              1 LLSpatialGroup::rebound()
                                1 LLSpatialGroup::rebound()
                                  1 LLSpatialGroup::rebound()
                                    1 LLSpatialGroup::rebound()
                                      1 LLSpatialGroup::rebound()
                                        1 LLSpatialGroup::boundObjects(int, LLVector3&, LLVector3&)
                                          1 LLSpatialGroup::boundObjects(int, LLVector3&, LLVector3&)
                9 LLPipeline::stateSort(LLCamera&)
                  5 LLPipeline::stateSort(LLDrawable*, LLCamera&)
                    5 LLVOAvatar::updateVisibility(int)
                      5 LLDrawable::updateDistance(LLCamera&)
                        5 LLVOAvatar::updateLOD()
                          3 LLViewerJoint::updateGeometry()
                            2 LLViewerJointMesh::updateGeometry()
                              2 LLViewerJointMesh::updateGeometry()
                            1 LLStrider<LLVector3>::operator[](unsigned)
                              1 LLStrider<LLVector3>::operator[](unsigned)
                          2 LLVOAvatar::updateMeshData()
                            2 LLViewerJoint::updateFaceData(LLFace*, float, int)
                              1 LLStrider<unsigned>::operator[](unsigned)
                                1 LLStrider<unsigned>::operator[](unsigned)
                              1 LLViewerJointMesh::updateFaceData(LLFace*, float, int)
                                1 LLStrider<LLVector3>::operator[](unsigned)
                                  1 LLStrider<LLVector3>::operator[](unsigned)
                  4 LLPipeline::postSort(LLCamera&)
                    4 LLSpatialGroup::rebuildGeom()
                      2 LLSpatialPartition::rebuildGeom(LLSpatialGroup*)
                        2 LLParticlePartition::getGeometry(LLSpatialGroup*)
                          1 LLVOClouds::getGeometry(int, LLStrider<LLVector3>&, LLStrider<LLVector3>&, LLStrider<LLVector2>&, LLStrider<LLColor4U>&, LLStrider<unsigned>&)
                            1 LLVOClouds::getGeometry(int, LLStrider<LLVector3>&, LLStrider<LLVector3>&, LLStrider<LLVector2>&, LLStrider<LLColor4U>&, LLStrider<unsigned>&)
                          1 LLVOPartGroup::getGeometry(int, LLStrider<LLVector3>&, LLStrider<LLVector3>&, LLStrider<LLVector2>&, LLStrider<LLColor4U>&, LLStrider<unsigned>&)
                            1 LLVOPartGroup::getGeometry(int, LLStrider<LLVector3>&, LLStrider<LLVector3>&, LLStrider<LLVector2>&, LLStrider<LLColor4U>&, LLStrider<unsigned>&)
                      2 LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup*)
                        2 LLFace::getGeometryVolume(LLVolume const&, int, LLStrider<LLVector3>&, LLStrider<LLVector3>&, LLStrider<LLVector2>&, LLStrider<LLVector2>&, LLStrider<LLColor4U>&, LLStrider<unsigned>&, LLMatrix4 const&, LLMatrix3 const&, unsigned&)
                          2 LLFace::getGeometryVolume(LLVolume const&, int, LLStrider<LLVector3>&, LLStrider<LLVector3>&, LLStrider<LLVector2>&, LLStrider<LLVector2>&, LLStrider<LLColor4U>&, LLStrider<unsigned>&, LLMatrix4 const&, LLMatrix3 const&, unsigned&)
                7 render_ui_and_swap()
                  5 render_ui_2d()
                    5 LLViewerWindow::draw()
                      3 LLView::draw()
                        2 LLView::draw()
                          2 LLContainerView::draw()
                            2 LLView::draw()
                              2 LLContainerView::draw()
                                2 LLView::draw()
                                  2 LLStatBar::draw()
                                    2 LLFontGL::renderUTF8(LLStringBase<char> const&, int, float, float, LLColor4 const&, LLFontGL::HAlign, LLFontGL::VAlign, unsigned char, int, int, float*, int) const
                                      1 LLFontGL::render(LLStringBase<wchar_t> const&, int, float, float, LLColor4 const&, LLFontGL::HAlign, LLFontGL::VAlign, unsigned char, int, int, float*, int, int) const
                                        1 glBegin
                                          1 glBegin_Exec
                                            1 gldUpdateDispatch
                                              1 gldGetQueryInfo
                                                1 gldGetString
                                                  1 gldGetString
                                                    1 gldGetString
                                                      1 gldGetString
                                                        1 gldGetString
                                      1 utf8str_to_wstring(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
                                        1 utf8str_to_wstring(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)
                                          1 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::reserve(unsigned long)
                                            1 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&)
                                              1 free
                                                1 szone_free
                                                  1 szone_free
                        1 LLMenuHolderGL::draw()
                          1 LLView::draw()
                            1 LLMenuGL::draw()
                              1 LLView::draw()
                                1 LLMenuItemBranchDownGL::draw()
                                  1 LLFontGL::render(LLStringBase<wchar_t> const&, int, float, float, LLColor4 const&, LLFontGL::HAlign, LLFontGL::VAlign, unsigned char, int, int, float*, int, int) const
                                    1 LLFontGL::render(LLStringBase<wchar_t> const&, int, float, float, LLColor4 const&, LLFontGL::HAlign, LLFontGL::VAlign, unsigned char, int, int, float*, int, int) const
                                      1 LLFont::hasGlyph(wchar_t) const
                                        1 LLFont::getGlyphInfo(wchar_t) const
                                          1 std::_Rb_tree<wchar_t, std::pair<wchar_t const, LLFontGlyphInfo*>, std::_Select1st<std::pair<wchar_t const, LLFontGlyphInfo*> >, std::less<wchar_t>, std::allocator<std::pair<wchar_t const, LLFontGlyphInfo*> > >::find(wchar_t const&)
                                            1 std::_Rb_tree<wchar_t, std::pair<wchar_t const, LLFontGlyphInfo*>, std::_Select1st<std::pair<wchar_t const, LLFontGlyphInfo*> >, std::less<wchar_t>, std::allocator<std::pair<wchar_t const, LLFontGlyphInfo*> > >::find(wchar_t const&)
                      2 LLTextBox::draw()
                        2 LLTextBox::drawText(int, int, LLColor4 const&)
                          2 LLFontGL::render(LLStringBase<wchar_t> const&, int, float, float, LLColor4 const&, LLFontGL::HAlign, LLFontGL::VAlign, unsigned char, int, int, float*, int, int) const
                            2 LLFont::hasGlyph(wchar_t) const
                              2 LLFont::getGlyphInfo(wchar_t) const
                                2 std::_Rb_tree<wchar_t, std::pair<wchar_t const, LLFontGlyphInfo*>, std::_Select1st<std::pair<wchar_t const, LLFontGlyphInfo*> >, std::less<wchar_t>, std::allocator<std::pair<wchar_t const, LLFontGlyphInfo*> > >::find(wchar_t const&)
                                  2 std::_Rb_tree<wchar_t, std::pair<wchar_t const, LLFontGlyphInfo*>, std::_Select1st<std::pair<wchar_t const, LLFontGlyphInfo*> >, std::less<wchar_t>, std::allocator<std::pair<wchar_t const, LLFontGlyphInfo*> > >::find(wchar_t const&)
                  1 LLVertexBuffer::clientCopy(double)
                    1 LLVertexBuffer::setBuffer(unsigned)
                      1 LLVertexBuffer::unmapBuffer()
                        1 glFlush
                          1 glFlush_Exec
                            1 glFlush_Exec
                  1 glFlush
                    1 gldFlush
                      1 gldDestroyVertexArray
                        1 io_connect_map_memory
                          1 mach_msg_trap
                            1 mach_msg_trap
                3 LLPipeline::updateCull(LLCamera&)
                  2 LLPipeline::processOcclusion(LLCamera&)
                    2 LLSpatialPartition::processOcclusion(LLCamera*)
                      1 LLOctreeClearOccludedNotActive::traverse(LLTreeNode<LLDrawable> const*)
                        1 LLOctreeClearOccludedNotActive::traverse(LLTreeNode<LLDrawable> const*)
                          1 LLOctreeNode<LLDrawable>::getOctState()
                            1 LLOctreeNode<LLDrawable>::getOctState()
                      1 LLOctreeState<LLDrawable>::getChild(unsigned)
                        1 LLOctreeState<LLDrawable>::getChild(unsigned)
                  1 LLSpatialPartition::cull(LLCamera&, std::vector<LLDrawable*, std::allocator<LLDrawable*> >*, int)
                    1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                      1 LLOctreeCull::traverse(LLTreeNode<LLDrawable> const*)
                        1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                          1 LLOctreeCull::traverse(LLTreeNode<LLDrawable> const*)
                            1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                              1 LLOctreeCull::traverse(LLTreeNode<LLDrawable> const*)
                                1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                  1 LLOctreeCull::traverse(LLTreeNode<LLDrawable> const*)
                                    1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                      1 LLOctreeCull::visit(LLOctreeState<LLDrawable> const*)
                                        1 LLOctreeCull::checkObjects(LLOctreeState<LLDrawable> const*, LLSpatialGroup const*)
                                          1 LLCamera::AABBInFrustum(LLVector3 const&, LLVector3 const&)
                                            1 LLCamera::AABBInFrustum(LLVector3 const&, LLVector3 const&)
              28 idle()
                9 LLViewerObjectList::update(LLAgent&, LLWorld&)
                  4 LLVOVolume::idleUpdate(LLAgent&, LLWorld&, double const&)
                    2 LLViewerObject::idleUpdate(LLAgent&, LLWorld&, double const&)
                      2 LLViewerObject::updateDrawable(int)
                        2 LLViewerObject::updateDrawable(int)
                    1 LLVOVolume::animateTextures()
                      1 LLMatrix4::translate(LLVector3 const&)
                        1 LLMatrix4::translate(LLVector3 const&)
                    1 LLVOVolume::idleUpdate(LLAgent&, LLWorld&, double const&)
                  3 LLVOAvatar::idleUpdate(LLAgent&, LLWorld&, double const&)
                    3 LLPolyMorphTarget::apply(ESex)
                      3 LLPolyMorphTarget::apply(ESex)
                  2 std::_Rb_tree_increment(std::_Rb_tree_node_base const*)
                    2 std::_Rb_tree_increment(std::_Rb_tree_node_base const*)
                8 idle_network()
                  8 LLMessageSystem::checkMessages(long long)
                    5 LLMessageSystem::decodeData(unsigned char const*, LLHost const&)
                      2 process_compressed_object_update(LLMessageSystem*, void**)
                        2 LLViewerObjectList::processCompressedObjectUpdate(LLMessageSystem*, void**, e_object_update_type)
                          2 LLViewerObjectList::processObjectUpdate(LLMessageSystem*, void**, e_object_update_type, bool, bool)
                            2 LLViewerObjectList::processUpdateCore(LLViewerObject*, void**, unsigned, e_object_update_type, LLDataPacker*, int)
                              2 LLVOVolume::processUpdateMessage(LLMessageSystem*, void**, unsigned, e_object_update_type, LLDataPacker*)
                                1 LLVOVolume::setVolume(LLVolumeParams const&, int, bool)
                                  1 LLPrimitive::setVolume(LLVolumeParams const&, int, bool)
                                    1 LLViewerObject::setNumTEs(unsigned char)
                                      1 LLPrimitive::setNumTEs(unsigned char)
                                        1 LLPrimitive::setNumTEs(unsigned char)
                                1 LLViewerObject::processUpdateMessage(LLMessageSystem*, void**, unsigned, e_object_update_type, LLDataPacker*)
                                  1 LLViewerObject::unpackParticleSource(LLDataPacker&, LLUUID const&)
                                    1 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)
                                      1 free
                                        1 szone_free
                                          1 szone_free
                      2 process_object_update(LLMessageSystem*, void**)
                        2 LLViewerObjectList::processObjectUpdate(LLMessageSystem*, void**, e_object_update_type, bool, bool)
                          2 LLViewerObjectList::processUpdateCore(LLViewerObject*, void**, unsigned, e_object_update_type, LLDataPacker*, int)
                            1 LLVOAvatar::processUpdateMessage(LLMessageSystem*, void**, unsigned, e_object_update_type, LLDataPacker*)
                              1 LLVOAvatar::updateMeshTextures()
                                1 LLTexLayerSet::createComposite()
                                  1 LLTexLayerSetBuffer::LLTexLayerSetBuffer[in-charge](LLTexLayerSet*, int, int, int)
                                    1 LLDynamicTexture::LLDynamicTexture[not-in-charge](int, int, int, LLDynamicTexture::EOrder, int)
                                      1 LLDynamicTexture::generateGLTexture()
                                        1 LLImageGL::createGLTexture(int, LLImageRaw const*, int)
                                          1 LLImageGL::createGLTexture(int, unsigned char const*, int, int)
                                            1 LLImageGL::setImage(unsigned char const*, int)
                                              1 glTexImage2D
                                                1 glTexImage2D_Exec
                                                  1 gleTextureImagePut
                                                    1 gleExtractPixel_RGBA_Ubyte
                                                      1 gleExtractPixel_RGBA_Ubyte
                            1 LLVOVolume::processUpdateMessage(LLMessageSystem*, void**, unsigned, e_object_update_type, LLDataPacker*)
                              1 LLPrimitive::unpackTEMessage(LLMessageSystem*, char*, int)
                                1 LLPrimitive::setTEBumpShinyFullbright(unsigned char, unsigned char)
                                  1 LLPrimitive::setTEBumpShinyFullbright(unsigned char, unsigned char)
                      1 std::vector<LLMsgVarData, std::allocator<LLMsgVarData> >::_M_fill_insert(__gnu_cxx::__normal_iterator<LLMsgVarData*, std::vector<LLMsgVarData, std::allocator<LLMsgVarData> > >, unsigned long, LLMsgVarData const&)
                        1 free
                          1 szone_free
                            1 szone_free
                    3 LLMsgData::~LLMsgData [in-charge]()
                      3 free
                        3 szone_free
                          3 szone_free
                4 LLViewerImageList::updateImages(float)
                  2 LLViewerImageList::updateImagesDecodePriorities()
                    1 LLViewerImageList::removeImageFromList(LLViewerImage*)
                      1 std::_Rb_tree<LLPointer<LLViewerImage>, LLPointer<LLViewerImage>, std::_Identity<LLPointer<LLViewerImage> >, LLViewerImage::Compare, std::allocator<LLPointer<LLViewerImage> > >::erase(std::_Rb_tree_iterator<LLPointer<LLViewerImage> >, std::_Rb_tree_iterator<LLPointer<LLViewerImage> >)
                        1 std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
                          1 std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
                    1 LLViewerImageList::updateImagesDecodePriorities()
                  1 LLPipeline::dirtyPoolObjectTextures(std::set<LLViewerImage*, std::less<LLViewerImage*>, std::allocator<LLViewerImage*> > const&)
                    1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                      1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                        1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                          1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                            1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                              1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                  1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                    1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                      1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                        1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                                          1 LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
                  1 LLViewerImageList::updateImagesFetchTextures(float)
                    1 std::_Rb_tree<LLViewerImage*, LLViewerImage*, std::_Identity<LLViewerImage*>, std::less<LLViewerImage*>, std::allocator<LLViewerImage*> >::_M_erase(std::_Rb_tree_node<LLViewerImage*>*)
                      1 std::_Rb_tree<LLViewerImage*, LLViewerImage*, std::_Identity<LLViewerImage*>, std::less<LLViewerImage*>, std::allocator<LLViewerImage*> >::_M_erase(std::_Rb_tree_node<LLViewerImage*>*)
                        1 std::_Rb_tree<LLViewerImage*, LLViewerImage*, std::_Identity<LLViewerImage*>, std::less<LLViewerImage*>, std::allocator<LLViewerImage*> >::_M_erase(std::_Rb_tree_node<LLViewerImage*>*)
                          1 std::_Rb_tree<LLViewerImage*, LLViewerImage*, std::_Identity<LLViewerImage*>, std::less<LLViewerImage*>, std::allocator<LLViewerImage*> >::_M_erase(std::_Rb_tree_node<LLViewerImage*>*)
                            1 free
                              1 szone_size
                                1 szone_size
                3 LLViewerPartSim::updateSimulation()
                  2 LLViewerPartGroup::updateParticles(float)
                    1 LLViewerObjectList::killObject(LLViewerObject*)
                      1 LLViewerObject::markDead()
                        1 LLDrawable::cleanupReferences()
                          1 LLPipeline::unlinkDrawable(LLDrawable*)
                            1 LLSpatialPartition::remove(LLDrawable*, LLSpatialGroup*)
                              1 LLSpatialGroup::removeObject(LLDrawable*, int)
                                1 LLTreeNode<LLDrawable>::remove(LLDrawable*)
                                  1 LLOctreeState<LLDrawable>::remove(LLDrawable*)
                                    1 std::_Rb_tree<LLPointer<LLDrawable>, LLPointer<LLDrawable>, std::_Identity<LLPointer<LLDrawable> >, std::less<LLPointer<LLDrawable> >, std::allocator<LLPointer<LLDrawable> > >::find(LLPointer<LLDrawable> const&)
                                      1 std::_Rb_tree<LLPointer<LLDrawable>, LLPointer<LLDrawable>, std::_Identity<LLPointer<LLDrawable> >, std::less<LLPointer<LLDrawable> >, std::allocator<LLPointer<LLDrawable> > >::find(LLPointer<LLDrawable> const&)
                    1 LLViewerPartGroup::removePart(int)
                      1 std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > >::erase(__gnu_cxx::__normal_iterator<LLPointer<LLViewerPart>*, std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > > >)
                        1 std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > >::erase(__gnu_cxx::__normal_iterator<LLPointer<LLViewerPart>*, std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > > >)
                  1 LLViewerPartSourceScript::update(float)
                    1 LLViewerPartSim::addPart(LLViewerPart*)
                      1 LLViewerPartSim::put(LLViewerPart*)
                        1 LLViewerPartGroup::addPart(LLViewerPart*, float)
                          1 std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<LLPointer<LLViewerPart>*, std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > > >, LLPointer<LLViewerPart> const&)
                            1 std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<LLPointer<LLViewerPart>*, std::vector<LLPointer<LLViewerPart>, std::allocator<LLPointer<LLViewerPart> > > >, LLPointer<LLViewerPart> const&)
                1 LLAgent::updateCamera()
                  1 LLAgent::calcFocusPositionTargetGlobal()
                    1 LLControlGroup::getVector3(LLStringBase<char> const&)
                      1 LLControlGroup::getControl(LLStringBase<char> const&)
                        1 std::_Rb_tree<LLStringBase<char>, std::pair<LLStringBase<char> const, LLPointer<LLControlBase> >, std::_Select1st<std::pair<LLStringBase<char> const, LLPointer<LLControlBase> > >, std::less<LLStringBase<char> >, std::allocator<std::pair<LLStringBase<char> const, LLPointer<LLControlBase> > > >::find(LLStringBase<char> const&)
                          1 std::_Rb_tree<LLStringBase<char>, std::pair<LLStringBase<char> const, LLPointer<LLControlBase> >, std::_Select1st<std::pair<LLStringBase<char> const, LLPointer<LLControlBase> > >, std::less<LLStringBase<char> >, std::allocator<std::pair<LLStringBase<char> const, LLPointer<LLControlBase> > > >::find(LLStringBase<char> const&)
                1 LLCallbackList::callFunctions()
                  1 LLFolderView::idle(void*)
                    1 get_clock_count()
                      1 gettimeofday
                        1 __gettimeofday
                          1 __nanotime
                            1 __nanotime
                1 LLWorld::updateRegions(float)
                  1 LLViewerRegion::idleUpdate(float)
                    1 LLViewerParcelOverlay::idleUpdate(bool)
                      1 LLViewerParcelOverlay::updatePropertyLines()
                        1 LLViewerParcelOverlay::addPropertyLine(LLDynamicArray<LLVector3, (int)256>&, LLDynamicArray<LLColor4U, (int)256>&, LLDynamicArray<LLVector2, (int)256>&, float, float, unsigned, LLColor4U const&)
                          1 LLViewerParcelOverlay::addPropertyLine(LLDynamicArray<LLVector3, (int)256>&, LLDynamicArray<LLColor4U, (int)256>&, LLDynamicArray<LLVector2, (int)256>&, float, float, unsigned, LLColor4U const&)
                1 LLWorld::updateVisibilities()
                  1 LLSurface::updatePatchVisibilities(LLAgent&)
                    1 LLSurfacePatch::updateVisibility()
                      1 LLSurface::getOriginAgent() const
                        1 LLAgent::getPosAgentFromGlobal(LLVector3d const&) const
                          1 LLAgent::getPosAgentFromGlobal(LLVector3d const&) const
              2 LLTextureFetch::update(unsigned)
                2 LLWorkerThread::update(unsigned)
                  2 LLQueuedThread::updateQueue(unsigned)
                    2 LLQueuedThread::processNextRequest()
                      2 ms_sleep(long)
                        2 mach_wait_until
                          2 mach_wait_until
              1 LLPumpIO::pump()
                1 LLPumpIO::processChain(LLPumpIO::LLChainInfo&)
                  1 LLURLRequest::process_impl(LLChannelDescriptors const&, boost::shared_ptr<LLBufferArray>&, bool&, LLSD&, LLPumpIO*)
                    1 curl_multi_perform
                      1 multi_runsingle
                        1 Curl_https_connecting
                          1 Curl_ossl_connect_common
                            1 ssl23_connect
                              1 ssl3_connect
                                1 ssl_verify_cert_chain
                                  1 X509_verify_cert
                                    1 internal_verify
                                      1 X509_verify
                                        1 ASN1_item_verify
                                          1 EVP_VerifyFinal
                                            1 RSA_verify
                                              1 RSA_eay_public_decrypt
                                                1 BN_mod_exp_mont
                                                  1 BN_mod_mul_montgomery
                                                    1 BN_from_montgomery
                                                      1 bn_mul_add_words
                                                        1 bn_mul_add_words
    100 Thread_1003
      100 _pthread_body
        100 PrivateMPEntryPoint
          100 kevent
            100 kevent
    100 Thread_1103
      100 _pthread_body
        100 PrivateMPEntryPoint
          100 TNodeSyncTask::SyncTaskProc(void*)
            100 MPWaitOnQueue
              100 semaphore_wait_signal_trap
                100 semaphore_wait_signal_trap
    100 Thread_1203
      100 _pthread_body
        100 dummy_worker
          100 LLThread::staticRun(apr_thread_t*, void*)
            100 LLQueuedThread::run()
              100 LLThread::checkPause()
                100 semaphore_wait_signal_trap
                  100 semaphore_wait_signal_trap
    100 Thread_1303
      100 _pthread_body
        100 dummy_worker
          100 LLThread::staticRun(apr_thread_t*, void*)
            100 LLQueuedThread::run()
              100 LLThread::checkPause()
                100 semaphore_wait_signal_trap
                  100 semaphore_wait_signal_trap
    100 Thread_1403
      100 _pthread_body
        100 dummy_worker
          100 LLThread::staticRun(apr_thread_t*, void*)
            100 LLQueuedThread::run()
              98 LLThread::checkPause()
                98 semaphore_wait_signal_trap
                  98 semaphore_wait_signal_trap
              2 LLQueuedThread::processNextRequest()
                2 LLWorkerThread::WorkRequest::processRequest()
                  2 LLImageWorker::doWork(int)
                    1 LLImageJ2C::decode(LLImageRaw*, float)
                      1 LLImageJ2C::decode(LLImageRaw*, float, int, int)
                        1 LLImageJ2CKDU::decodeImpl(LLImageJ2C&, LLImageRaw&, float, int, int)
                          1 LLKDUDecodeState::LLKDUDecodeState[in-charge](kdu_tile, unsigned char*, int)
                            1 kdu_synthesis::kdu_synthesis[in-charge](kdu_resolution, kdu_sample_allocator*, bool, float)
                              1 kd_synthesis::kd_synthesis[in-charge](kdu_resolution, kdu_sample_allocator*, bool, float)
                                1 kdu_kernels::~kdu_kernels [in-charge]()
                                  1 free
                                    1 __spin_lock
                                      1 __spin_lock
                    1 LLImageJ2C::decode(LLImageRaw*, float, int, int)
                      1 LLImageJ2CKDU::decodeImpl(LLImageJ2C&, LLImageRaw&, float, int, int)
                        1 LLKDUDecodeState::processTileDecode(float, int)
                          1 kd_synthesis::pull(kdu_line_buf&, bool)
                            1 kd_synthesis::horizontal_synthesis(kd_line_cosets&)
                              1 kd_decoder::pull(kdu_line_buf&, bool)
                                1 kd_decoder::decode_row_of_blocks()
                                  1 kd_decoder::decode_row_of_blocks()
    100 Thread_1503
      100 _pthread_body
        100 dummy_worker
          100 LLThread::staticRun(apr_thread_t*, void*)
            100 LLQueuedThread::run()
              100 LLThread::checkPause()
                99 semaphore_wait_signal_trap
                  99 semaphore_wait_signal_trap
                1 pthread_cond_wait
                  1 pthread_cond_wait
    100 Thread_1603
      100 _pthread_body
        100 __ape_agent
          100 mach_msg_trap
            100 mach_msg_trap
    100 Thread_1703
      100 _pthread_body
        100 ah_serv_loop
          100 mach_msg_trap
            100 mach_msg_trap
    100 Thread_1803
      100 _pthread_body
        100 gloInitializeLibrary
          100 mach_msg_trap
            100 mach_msg_trap
    100 Thread_1903
      100 _pthread_body
        100 PR_Select
          100 nsThread::Main(void*)
            100 nsSocketTransportService::Run()
              100 nsSocketTransportService::Poll(unsigned*)
                100 PR_Poll
                  100 PR_OpenDir
                    100 select
                      100 select
    100 Thread_1a03
      100 _pthread_body
        100 CAPThread::Entry(CAPThread*)
          100 HALRunLoop::OwnThread(void*)
            100 CFRunLoopRunInMode
              100 CFRunLoopRunSpecific
                100 mach_msg_trap
                  100 mach_msg_trap
    100 Thread_1b03
      100 _pthread_body
        100 CAPThread::Entry(CAPThread*)
          100 HP_IOThread::ThreadEntry(HP_IOThread*)
            100 HP_IOThread::WorkLoop()
              97 CAGuard::WaitUntil(unsigned long long)
                97 CAGuard::WaitFor(unsigned long long)
                  96 semaphore_timedwait_signal_trap
                    96 semaphore_timedwait_signal_trap
                  1 pthread_cond_timedwait_relative_np
                    1 pthread_cond_timedwait_relative_np
              3 HP_IOThread::PerformIO(AudioTimeStamp const&)
                2 IOA_Device::CallIOProcs(AudioTimeStamp const&, AudioTimeStamp const&, AudioTimeStamp const&)
                  1 HP_IOProc::Call(AudioTimeStamp const&, AudioTimeStamp const&, AudioBufferList const*, AudioTimeStamp const&, AudioBufferList*)
                    1 AudioDeviceIOCallback
                      1 BigEndian16DecompDispatch
                        1 SoundComponentGetSourceData
                          1 CallComponentDispatch
                            1 MixerDispatch
                              1 BigEndian16DecompDispatch
                                1 InvokeSoundParamUPP
                                  1 SoundComplete
                                    1 ProcessNextCmd
                                      1 ProcessCmd
                                        1 InvokeSndCallBackUPP
                                          1 CarbonSndPlayDoubleBufferCallBackProc
                                            1 FSOUND_Output_Mac_Callback
                                              1 FSOUND_Software_Fill
                                                1 windCallback(void*, void*, int, void*)
                                                  1 windCallback(void*, void*, int, void*)
                  1 IOA_SingleDevice::WriteOutputData(AudioTimeStamp const&, unsigned long)
                    1 iokit_user_client_trap
                      1 iokit_user_client_trap
                1 std::vector<HP_IOProc, std::allocator<HP_IOProc> >::size() const
                  1 std::vector<HP_IOProc, std::allocator<HP_IOProc> >::size() const
    100 Thread_1c03
      100 _pthread_body
        100 PrivateMPEntryPoint
          100 FSOUND_Stream_UpdateThread
            97 FSOUND_Time_Sleep
              97 mach_wait_until
                97 mach_wait_until
            2 FSOUND_Stream_UpdateThread
            1 FSOUND_Stream_Update
              1 FSOUND_Stream_Flip
                1 FSOUND_Stream_Read
                  1 FSOUND_Stream_ReadMpeg_Net
                    1 FSOUND_Mpeg_DecodeFrame
                      1 FSOUND_Mpeg_Decode_Layer3
                        1 FSOUND_Mpeg_Decode_Layer3
    100 Thread_1d03
      100 _pthread_body
        100 PR_Select
          100 nsThread::Main(void*)
            100 TimerThread::Run()
              100 PR_WaitCondVar
                99 PR_Unlock
                  99 semaphore_timedwait_signal_trap
                    99 semaphore_timedwait_signal_trap
                1 semaphore_wait_signal_trap
                  1 semaphore_wait_signal_trap
    100 Thread_1e03
      100 _pthread_body
        100 PrivateMPEntryPoint
          100 FSOUND_AsyncThreadCallback
            99 FSOUND_Time_Sleep
              99 mach_wait_until
                99 mach_wait_until
            1 FSOUND_AsyncThreadCallback
    100 Thread_1f03
      100 _pthread_body
        100 CarbonSelectThreadFunc
          100 syscall
            100 syscall
    100 Thread_2003
      100 _pthread_body
        100 CarbonOperationThreadFunc
          100 semaphore_wait_signal_trap
            100 semaphore_wait_signal_trap
    100 Thread_2103
      100 _pthread_body
        100 PrivateMPEntryPoint
          100 FSOUND_Sockbuf_UpdateThread
            99 FSOUND_Time_Sleep
              99 mach_wait_until
                99 mach_wait_until
            1 FSOUND_Sockbuf_GetBufferStatsPercent
              1 FSOUND_Sockbuf_GetBufferStatsPercent

Total number in stack (recursive counted multiple, when >=5):
        26       gldGetString
        18       _pthread_body
        16       LLOctreeTraveler<LLDrawable>::traverse(LLTreeNode<LLDrawable> const*)
        13       mach_msg_trap
        10       gldUpdateDispatch
        8       free
        8       gldDestroyVertexArray
        8       gldGetQueryInfo
        8       io_connect_map_memory
        7       semaphore_wait_signal_trap
        6       LLSpatialGroup::rebound()
        6       LLView::draw()
        6       glDrawRangeElements
        6       gleDrawArraysOrElements_IMM_Exec
        6       gleDrawArraysOrElements_VBO_Exec
        5       PrivateMPEntryPoint
        5       glDrawElements
        5       gldInitDispatch
        5       gleDrawArraysOrElements_Core
        5       szone_free

Sort by top of stack, same collapsed (when >= 5):
        semaphore_wait_signal_trap        598
        mach_msg_trap        412
        mach_wait_until        297
        semaphore_timedwait_signal_trap        195
        kevent        100
        select        100
        syscall        100
        gldGetString        7
        szone_free        7
Sample analysis of process 1451 written to file /dev/stdout
Sampling process 1451 each 10 msecs 100 times


More information about the SLDev mailing list