Recommended
PDF
PPTX
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
PPTX
【DL輪読会】大量API・ツールの扱いに特化したLLM
PDF
PDF
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
PDF
PPTX
Apache Avro vs Protocol Buffers
PDF
PDF
PPTX
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
PDF
(修正)機械学習デザインパターン(ML Design Patterns)の解説
PDF
PDF
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
PDF
PDF
PDF
Pythonではじめる OpenAI Gymトレーニング
PDF
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
PDF
PPTX
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜 - OpenStack最新情報セミナー(2017年3月)
More Related Content
PDF
PPTX
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
PPTX
【DL輪読会】大量API・ツールの扱いに特化したLLM
PDF
PDF
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
What's hot
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
PDF
PPTX
Apache Avro vs Protocol Buffers
PDF
PDF
PPTX
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
PDF
(修正)機械学習デザインパターン(ML Design Patterns)の解説
PDF
PDF
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
PDF
PDF
PDF
Pythonではじめる OpenAI Gymトレーニング
PDF
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
Viewers also liked
PDF
PPTX
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜 - OpenStack最新情報セミナー(2017年3月)
PPTX
PDF
StackStorm で実現する、複数システムに対する統一インターフェイス提供と運用一元化の取り組み - OpenStack最新情報セミナー(2017年3月)
PDF
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
PDF
OpenShift 3で、DockerのPaaSを作る話
PPTX
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
PDF
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
PPT
Similar to Google Perf Tools (tcmalloc) の使い方
PPT
PDF
PPTX
PDF
PPTX
PDF
PDF
PDF
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
PDF
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
PPT
PPT
More from Kazuki Ohta
PPTX
PPT
KEY
Optimization Techniques at the I/O Forwarding Layer
KEY
PPTX
Hadoop @ Java CCC 2008 Spring
PPTX
Sedue at Hatena::Bookmark
Google Perf Tools (tcmalloc) の使い方 1. 2. WHAT IS TCMALLOC? The fastest malloc we've seen; works particularly well with threads and STL . Also: thread-friendly heap-checker, heap-profiler, and cpu-profiler. http://goog-perftools.sourceforge.net/ 3. 4. TCMALLOC 開発動機 TCMalloc -> Thread Caching Malloc glibc malloc sucks! Multi-Thread アプリケーションにやさしくない Small Object に関しては tcmalloc の方が glibc malloc より6倍程高速 各 Thread では Arena と呼ばれる領域が確保されるが、この領域はスレッド間を移動できない。つまり、スレッド A で大量にメモリを確保して開放した後、スレッドBでメモリを確保しようとしても同じ領域を再利用できない ( らしい ) SmallObject の空間使用率が悪い 8byte の object が N 個ある場合 Glibc malloc では 16N bytes Tcmalloc では 8N * 1.01 bytes 5. 6. TCMALLOC の実装 (1) 全体で共有する” Central Heap” Thread 毎に”Thread Cache” 双方向にデータが移動可能 定期的に gc が発生し、 ThreadCache のデータを CentralHeap に書き戻す 32k 以下は ThreadCache, それ以上は CentralHeap 7. TCMALLOC の実装 (2) Small Object の場合 サイズ毎 (eg. 8byte, 16byte, 32byte, …) に freelist を管理 Freelist に要素がある場合はそれを取る。 Lock が要らない 。 Freelist が空の場合は CentralHeap の freelist から取る。 CentralHeapFreelist が空の場合は CentralHeap で allocation が発生。何個かを ThreadCache に移動。 8. TCMALLOC の実装 (3) Large Object の場合 CentralHeap の freelist を見る。 Lock が必要。 page(4k) 単位で扱う。 Freelist が空だったらより大きいサイズの freelist から取ってくる。領域は分割する。より大きいサイズの freelist も全て空だったら brk 。 9. TCMALLOC の実装 (4) Deallocation SmallObject の場合は ThreadCache の freelist に返還 ThreadCache のサイズ上限 (2M) を超えた場合は GC が起こり不必要な Object を CentralHeap に移動。 Large Object の場合は CentralHeap の freelist に返還 10. 11. 12. 13. 14. TCMALLOC AS HEAPPROFILER Heap の使用状況をプロファイリングできる どの関数がどれぐらいメモリを使っているか? ある時点と比べてどの関数がどれぐらいメモリをアロケーションしたか? 使い方 $ HEAPPROFILE=/tmp/profile ./a.out HEAP_PROFILE_ALLOCATION_INTERVAL で指定したサイズのアロケーションが発生すると、 /tmp/profile.%d.heap というファイルが dump される 15. TCMALLOC AS HEAPPROFILER Text 表示 % pprof --text /usr/bin/gfs_master /tmp/profile.0100.heap 255.6 24.7% 24.7% 255.6 24.7% GFS_MasterChunk::AddServer 184.6 17.8% 42.5% 298.8 28.8% GFS_MasterChunkTable::Create 176.2 17.0% 59.5% 729.9 70.5% GFS_MasterChunkTable::UpdateState 169.8 16.4% 75.9% 169.8 16.4% PendingClone::PendingClone 76.3 7.4% 83.3% 76.3 7.4% __default_alloc_template::_S_chunk_alloc 49.5 4.8% 88.0% 49.5 4.8% hashtable::resize メモリ使用量 (M) その関数呼び出す全ての関数の メモリ使用量の和 (M) 16. TCMALLOC AS HEAPPROFILER 過去の時点と比較 base 時点と比べてどの関数がどのぐらい allocation したか ? Long running な Appliction のメモリリーク解析に最適 $ pprof –text --base=/tmp/profile.0004.heap \ ./a.out /tmp/profile.0100.heap 17. 18. 19. TCMALLOC AS CPUPROFILER CPU Profiler としても使える ある一定のインターバル毎にどの関数内にいるかをサンプリングする 使い方 CPUPROFILE=/tmp/profile ./a.out pprof の使い方は HeapChecker の時と同じ 20. 21. 22. 実例 : SEDUE Glibc malloc 使用時のメモリの突発的 & 爆発的増加が無くなった ( 減っているのが偉すぎ ) 。スループットも向上。 23. 24.