メインコンテンツまでスキップ
バージョン: 2.1

メモリログ解析

be/log/be.INFOのプロセスメモリログは主に2つのカテゴリに分けられます。1つはプロセスメモリサイズとシステムの残り利用可能メモリサイズを含むプロセスメモリステータスログです。もう1つはMemory Trackerによってカウントされるメモリサイズを含む、より詳細なプロセスメモリ統計ログです。

プロセスメモリステータスログ分析

Doris BEのプロセスメモリステータスは、プロセスメモリが256 MB増加または減少するたびにlog/be.INFOログに出力されます。また、プロセスメモリが不足している場合、プロセスメモリステータスは他のログと併せて出力されます。

os physical memory 375.81 GB. process memory used 4.09 GB(= 3.49 GB[vm/rss] - 410.44 MB[tc/jemalloc_cache] + 1 GB[reserved] + 0B[waiting_refresh]), limit 3.01 GB, soft limit 2.71 GB. sys available memory 134.41 GB(= 1 35.41 GB[proc/available] - 1 GB[reserved] - 0B[waiting_refresh]), low water mark 3.20 GB, warning water mark 6.40 GB.
  1. os physical memory 375.81 GBはシステム物理メモリ375.81 GBを示します。

  2. process memory used 4.09 GB (= 3.49 GB [vm/rss] - 410.44 MB [tc/jemalloc_cache] + 1 GB [reserved] + 0B [waiting_refresh])

  • 現在、BEプロセスは4.09 GBのメモリを使用していると判断しており、BEプロセスが使用している実際の物理メモリvm/rssは3.49 GBです。
  • そのうち410.44 MBはtc/jemalloc_cacheです。このキャッシュ部分は後続の実行プロセスで最初に再利用されるため、ここではBEプロセスメモリとして計算されません。
  • reservedは実行プロセス中に予約されたメモリです。通常、HashTableやその他の大量のメモリを消費する操作を構築する前に、メモリ不足によりHashTable構築プロセスが終了されないことを保証するため、HashTableのメモリを事前に予約します。この予約メモリ部分は、実際に割り当てられていなくても、BEプロセスメモリに計算されます。
  • waiting_refreshは、2回のメモリステータス更新間隔で要求された大容量メモリです。Dorisメモリステータス更新のデフォルト間隔は100msです。2回のメモリステータス更新間隔での大量のメモリ要求により、メモリが制限を超えた後にメモリGCが適時に検出・トリガーされないことを避けるため、間隔内で要求された大容量メモリはBEプロセスメモリに計算されます。waiting_refreshは各メモリステータス更新後に0にクリアされます。
  1. sys available memory 134.41 GB (= 135.41 GB [proc/available] - 1 GB [reserved] - 0B [waiting_refresh])
  • BEプロセスの現在の残り利用可能メモリは134.41 GBで、システム内でBEプロセスが利用可能な実際のメモリproc/availableは135.41 GBです。
  • 1GBのメモリが予約されているため、BEプロセスの残り利用可能メモリを計算する際にreservedが差し引かれます。reservedおよびwaiting_refreshについて、limit 3.01 GB, soft limit 2.71 GBlow water mark 3.20 GB, warning water mark 6.40 GBについては、MemLimitとWaterMarkの詳細情報は[メモリ制限とウォーターマーク計算方法]を参照してください。

プロセスメモリ統計ログ解析

プロセスの利用可能メモリが不足している場合、BE内のほとんどのメモリ要求はそれを認識し、Memory GCのトリガーやクエリのキャンセルなどの事前定義されたコールバック方法を実行しようとし、プロセスメモリ統計ログを出力します。デフォルト出力間隔は1秒です。ログはProcess Memory 要約Memory Tracker 要約の2つの部分に分かれています。be/log/be.INFOで確認し、現在のプロセスメモリ使用量が期待に沿っているかを確認できます。

Process Memory 要約:
os physical memory 375.81 GB. process memory used 4.09 GB(= 3.49 GB[vm/rss] - 410.44 MB[tc/jemalloc_cache] + 1 GB[reserved] + 0B[waiting_refresh]), limit 3.01 GB, soft limit 2.71 GB. sys available memory 134.41 GB(= 135.41 GB[proc/available] - 1 GB[reserved] - 0B[waiting_refresh]), low water mark 3.20 GB, warning water mark 6.40 GB.
Memory Tracker 要約:
MemTrackerLimiter Label=other, タイプ=overview, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=schema_change, タイプ=overview, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=compaction, タイプ=overview, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=load, タイプ=overview, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=query, タイプ=overview, Limit=-1.00 B(-1 B), Used=83.32 MB(87369024 B), Peak=88.33 MB(92616000 B)
MemTrackerLimiter Label=global, タイプ=overview, Limit=-1.00 B(-1 B), Used=199.37 MB(209053204 B), Peak=199.37 MB(209053204 B)
MemTrackerLimiter Label=tc/jemalloc_cache, タイプ=overview, Limit=-1.00 B(-1 B), Used=410.44 MB(430376896 B), Peak=-1.00 B(-1 B)
MemTrackerLimiter Label=tc/jemalloc_metadata, タイプ=overview, Limit=-1.00 B(-1 B), Used=144 MB(151759440 B), Peak=-1.00 B(-1 B)
MemTrackerLimiter Label=sum of all trackers, タイプ=overview, Limit=-1.00 B(-1 B), Used=114.80 MB(726799124 B), Peak=-1.00 B(-1 B)
MemTrackerLimiter Label=process resident memory, タイプ=overview, Limit=-1.00 B(-1 B), Used=3.49 GB(3743289344 B), Peak=3.49 GB(3743289344 B)
MemTrackerLimiter Label=reserved_memory, タイプ=overview, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=-1.00 B(-1 B)
MemTrackerLimiter Label=process virtual memory, タイプ=overview, Limit=-1.00 B(-1 B), Used=44.25 GB(47512956928 B), Peak=44.25 GB(47512956928 B)
MemTrackerLimiter Label=Orphan, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=DetailsTrackerSet, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTracker Label=IOBufBlockMemory, Parent Label=DetailsTrackerSet, Used=1.41 MB(1474560 B), Peak=1.41 MB(1474560 B)
MemTracker Label=SegmentCache[size], Parent Label=DetailsTrackerSet, Used=1.64 MB(1720543 B), Peak=18.78 MB(19691997 B)
MemTracker Label=SchemaCache[number], Parent Label=DetailsTrackerSet, Used=9.21 KB(9428 B), Peak=9.21 KB(9428 B)
MemTracker Label=TabletSchemaCache[number], Parent Label=DetailsTrackerSet, Used=9.29 MB(9738798 B), Peak=9.29 MB(9738798 B)
MemTracker Label=TabletMeta(experimental), Parent Label=DetailsTrackerSet, Used=25.08 MB(26303456 B), Peak=25.08 MB(26303456 B)
MemTracker Label=RuntimeFilterMergeControllerEntity(experimental), Parent Label=DetailsTrackerSet, Used=32.00 B(32 B), Peak=32.00 B(32 B)
MemTrackerLimiter Label=SegCompaction, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=PointQueryExecutor, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=BlockCompression, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=RowIdStorageReader, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=SubcolumnsTree, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=S3FileBuffer, タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=DataPageCache[size](AllocByAllocator), タイプ=global, Limit=-1.00 B(-1 B), Used=198.70 MB(208357157 B), Peak=198.73 MB(208381892 B)
MemTrackerLimiter Label=IndexPageCache[size](AllocByAllocator), タイプ=global, Limit=-1.00 B(-1 B), Used=679.73 KB(696047 B), Peak=679.73 KB(696047 B)
MemTrackerLimiter Label=PKIndexPageCache[size](AllocByAllocator), タイプ=global, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=Query#Id=529e3cb37dff464c-93bd9eafa8944ea6, タイプ=query, Limit=2.00 GB(2147483648 B), Used=83.32 MB(87369024 B), Peak=88.33 MB(92616000 B)
MemTrackerLimiter Label=MemTableTrackerSet, タイプ=load, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTrackerLimiter Label=SnapshotManager, タイプ=other, Limit=-1.00 B(-1 B), Used=0(0 B), Peak=0(0 B)
MemTracker Label=AllMemTableMemory, Parent Label=DetailsTrackerSet, Used=0(0 B), Peak=0(0 B)

Process Memory 要約はプロセスメモリの状態です。上記の[Process Memory Status ログ Analysis]を参照してください。

Memory Tracker 要約はプロセスのMemory Trackerの概要で、タイプ=overviewタイプ=globalのすべてのMemory Trackerを含み、ユーザーが現在のメモリ状態を分析するのに役立ちます。メモリの各部分の意味を分析するには、概要を参照してください。