FortiGate
FortiGate Next Generation Firewall utilizes purpose-built security processors and threat intelligence security services from FortiGuard labs to deliver top-rated protection and high performance, including encrypted traffic.
Kenichi_Terashita_FT
Article Id 197858
Description
このKBでは、2つのConserve modeの特徴とその違いに関する次のような疑問について解説しています。また、Conserve modeに対するソリューションについても紹介しています。
 
  • Conserve modeとはどのようなモードですか?
  • 通常のConserve modeとKernele conserve modeの違いは何ですか?
  • どうやってメモリ使用率はどのように確認することが出来ますか?また、Conserve modeになる状態に近付いているかどうかをどうやって確認することが出来ますか?
  • Cached、Active、Inactiveで示されるメモリ領域は、どのような意味がありますか?
  • メモリ使用率を抑えるためには何が必要ですか?
 

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

FortiGate CPU resource optimization configuration steps

Contributors