Linux + SGA 大きく + 接続セッション沢山 -> Hugepage
メモ
http://www.reqtc.com/column/linux-hugepage4.html
http://www.reqtc.com/column/linux-hugepage5.html
http://joe.blog.freemansoft.com/2010/10/memory-tuning-how-os-page-sizes-can.html
メモリ沢山積んだ(っても、64Gくらいじゃもうそんなに多いといえないか?)マシンでOracle動かして、
調子に乗ってSGA 30G環境で、1000セッションつないだらスワップ起きますよというお話。
「1GBの共有メモリに対して、2MBのPTEが消費」とあるので →1024/2 = 512/M 30Gだと、、、最悪、、、 →30720/512 = 60M/1ses * 1000 ses = 60G (ノω・、) ウゥ・・・
HugePageの設定をおとなしく入れましょうorz
LinuxだとPTEで予想以上にメモリ使われるんですねえ…。
最近はあまり見かけない?ですが、共有メモリアーキテクチャ全般に言えることですので、
PostgreSQL辺りでも言えることかもしれません。
※9/2追記(ちょっとした検証結果
■メモリ 2G ■SGA設定 1G ■コネクション数 100(外部ホストからjdbc-thin接続) ■Huge設定時の 5分後付近の vmstat vm.nr_hugepages = 524 HugePages_Total: 524 HugePages_Free: 19 HugePages_Rsvd: 8 Hugepagesize: 2048 kB procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 27 2 84 11424 2004 478108 0 0 24 31344 3702 20264 73 16 5 5 0 64 1 84 10540 1988 478496 0 0 4 21936 4095 20599 66 15 12 7 0 51 1 84 10168 1988 478468 0 0 0 14504 3970 22267 75 15 7 4 0 9 2 84 12696 1960 477628 0 0 0 22188 3626 20708 74 16 5 4 0 ■Hugeなしの 5分後付近の vmstat HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 Hugepagesize: 2048 kB procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 70 0 166704 12708 1080 1363400 0 0 0 13064 3294 20129 75 15 6 3 0 33 1 166700 11552 1080 1364644 0 0 0 17064 3198 19718 75 16 6 4 0 1 2 166696 11568 1088 1364044 0 0 16 25660 3470 19088 74 16 4 5 0 7 1 166696 11356 1080 1363584 0 0 20 27688 3502 16701 59 15 14 11 0