Description
Scope
All of FortiOS
Solution
このKBでは、2つのConserve modeの特徴とその違いに関する次のような疑問について解説しています。また、Conserve modeに対するソリューションについても紹介しています。
- Conserve modeとはどのようなモードですか?
- 通常のConserve modeとKernele conserve modeの違いは何ですか?
- どうやってメモリ使用率はどのように確認することが出来ますか?また、Conserve modeになる状態に近付いているかどうかをどうやって確認することが出来ますか?
- Cached、Active、Inactiveで示されるメモリ領域は、どのような意味がありますか?
- メモリ使用率を抑えるためには何が必要ですか?
- これは、オリジナルKB"Technical Note : Discussion of regular conserve mode and kernel conserve mode"を翻訳してものです。
- This article is a Japanese translation of "Technical Note : Discussion of regular conserve mode and kernel conserve mode"
Scope
All of FortiOS
Solution
Conserve modeとはどのようなモードですか?
システム上で使用しているメモリ使用率が高まったときに、FortiGateは自己防御機能としてのConserve modeへ移行します。Conserve modeに移行したときには、FortiGateはメモリ領域を確保するための動作をとります。十分なメモリが回復された場合、システムはConserve modeを抜け(leaving/exiting)、自己防御機能を解除します。
通常のConserve modeとKernele conserve modeの違いは何ですか?
Conserve modeには2つの種類があります。通常のConserve mode(System conserve modeとも呼ばれます)とKernel conserve modeです。両方共メモリ利用率が高まったことをトリガーに動作しますが、それぞれ別のメモリ領域によって影響を受けます。
通常のConserve mode
通常のConserve modeでは、システム全体のメモリ領域が不足したときに発生します。Conserve modeが切り替わるしきい値は、下記のように物理メモリの合計値に左右されます。
物理メモリ(MB) Conserve modeになるFree Memoryのしきい値(MB) Conserve modeを抜けるFree Memoryのしきい値 (MB) 128以下 5 10 256 10 20 512 40 60 512より上 120 160通常のConserve modeは、共有メモリ(Shared memory/SHM)が多く使用されることにより発生することが多く、まれにプロセルが多くのメモリを使用したときに発生します。共有メモリは、異なるプロセス間で共有するために割り当てられるバッファ領域です。これは、"# diagnose sys top"コマンドのメモリ使用率列にはリストされません。共有メモリは、主にアプリケーションプロキシによってトラフィックをバッファするために使用されますが、LoggingやQuarantineの為にも使用されます。通常のConserve modeが切り替わったときには、Event logに以下のようなログが記録されます。conserve=on total=<totalmemMB> free=<freememMB> entermargin=<LF> exitmargin=<HF> msg="The system has entered conserve mode"
conserve=exit total=<totalmemMB> free=<freememMB> entermargin=<LF> exitmargin=<HF> msg="The system exited conserve mode"
Kernel conserve mode
Kernel conserve modeは、LowFreeメモリ領域が低下したときに動作します。LowFreeメモリはKernelによって直接使用される領域です。LowTotalに達することは、Kernelがこれ以上新たにメモリ領域を確保できない事を意味します。このKernelが確保できるメモリ領域の上限は、FortiGateのモデルによって異なります。FortiGate-3950BやFortiGate-3951Bなどの新しいプラットフォームは、64bitのメモリ空間に対応して領域を確保することが出来ます。
Kernel Conserve modeは、LowFreeがLowTotalの20%を下回るときに動作し始めます。 その後、LowFree領域が30%以上まで回復すると、Kernel conserve modeが終了します。
Kernel conserve modeが切り替わるときには、Event logに以下のようなログが記録されます。"Kernel enters conserve mode""Kernel leaves conserve mode"注意: GUI Dashboard上ではわずかに異なるメッセージが出力されるかもしれません。"FortiGate has reached system connection limit for x seconds"Kernel Bufferと呼ばれるKernelデータ構造(slab)は、Kernelによる多くの目的のために使用されます。Firewall SessionやNATテーブル、Routing情報やRoute Cache、Forwarding Information Base(FIB)、ARP Cacheなどです。これらはLow Memory領域が使用されます。また、このKernel BufferはIPS、DoS Sensorによっても非常に頻繁に利用されます。IPS SignatureやApplication Control Signatureのマッチング処理などで使用されます。Firewall Sessionのためにも多くのKernel Bufferを使用します。IPS、DLP、IMを使用しているFirewall Sessionなど、Kernel Bufferは同様に使用されます。
どうやってメモリ使用率はどのように確認することが出来ますか?また、Conserve modeに近付いているかどうかをどうやって確認することが出来ますか?
"diagnose hardware system memory"コマンドを使用することによって、通常のConserve modeとKernel conserve modeの為に計算される全てのメモリ使用率の値が確認できます。それらは、MemTotal、MemFree、Buffer(slab)、LowTotal、LowFreeにあたります。以下に、FortiWiFi-60Bでのサンプルを掲載しています。
FWF60B # diagnose hardware sysinfo memory total: used: free: shared: buffers: cached: shm: Mem: 260435968 146337792 114098176 0 221184 65974272 59985920 Swap: 0 0 0 MemTotal: 254332 kB MemFree: 111424 kB MemShared: 0 kB Buffers: 216 kB Cached: 64428 kB SwapCached: 0 kB Active: 26844 kB Inactive: 37856 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 254332 kB (2) LowFree: 111424 kB (1) SwapTotal: 0 kB SwapFree: 0 kB |
-
LowFreeが現在、LowTotalの43.8%(111,424(1) / 254,332(2) * 100)ですので、このユニットはKernel conserve modeにはなっていません。
-
このユニットは、256MBの物理メモリ(MemTotalを見てください)を搭載しているので、Conserveになるしきい値は10MBです。MemFreeは10MBよりもはるかに多いので、このユニットは通常のConserve modeになる状態ではありません。
Cached、Active、Inactiveで示されるメモリ領域は、どのような意味がありますか?
Cached = Active + Inactive
これは、FortiGate自身がキャッシュしている情報です(基本的にはI/O バッファです)。Inactive領域は、システムがより多くのメモリを必要とする時に、使用領域として確保されて利用されます。
さらに、"diagnose system top"コマンドで、各プロセスがユーザースペースでどの程度メモリを占有しているかどうかをパーセンテージで確認することが出来ます。なお、共有メモリ(Shared momery)は、この列にはカウントされません。一番右側の列を確認してください。
Run Time: 11 days, 19 hours and 6 minutes 0U, 0S, 14I; 248T, 108F, 56KF newcli 414 R 1.9 5.3 ipsengine 56 S < 0.0 12.4 httpsd 72 S 0.0 7.2 cmdbsvr 17 S 0.0 7.2 httpsd 85 S 0.0 6.7 httpsd 37 S 0.0 6.1 newcli 413 S 0.0 5.3 fgfmd 78 S 0.0 5.2 miglogd 35 S 0.0 5.1 scanunitd 411 S < 0.0 4.8 updated 65 S 0.0 4.6 scanunitd 410 S < 0.0 4.5 iked 64 S 0.0 4.5 urlfilter 57 S 0.0 4.4 ../.. |
例えば、ipsengineプロセスはユーザースペース領域の12.4%のメモリを占有しています。
メモリ使用率を抑えるためには何が必要ですか?
次のアクションは、メモリリソースを節約するために役立ちます。
-
"Technical Note : FortiGate CPU resource optimization configuration steps"に書かれているように、Firewall Sessionの数を減らす
-
Antivirusの最大ファイルサイズを下げる
-
Logging、Archive、DLP、IPS等で必須ではない機能をOffにする
-
"Content Summary"を無効にする(特にFortiAnalyzerを使用できない場合は)
-
メモリにキャッシュを必要とする機能による負荷を下げる(Explicit proxy、FortiGuard Antispam/Webfilterなど)
このリストは完全なものではありません。必須ではない機能として何を選択するかは、管理者に任されています。
Kerwords for search: FortiGate Kernel Conserve mode Memory Free Cached Active Inactive Japan Japanese
Related Articles