しばらく前から、gnomeを使うようになりました。それがきっかけだったのか不明ですが、emacsを実行すると、
(emacs:26676): Gdk-WARNING **: shmget failed: error 12 (Cannot allocate memory)
と表示されるなど、「Gdk-WARNING **: shmget failed: error 12 (Cannot allocate memory)」をときどき見かけるようになりました。gtkだかgdkだかのwarningメッセージは、昔からダラダラ大量に出たりするので、またか、くらいに思ってたんです。
今日なんとなく、ネット検索してみたところ、本当に、共有メモリが足りなくてこれが出てるんでは?と思い、対策を施してみることに。
FreeBSDの場合、root権限で、以下のコマンドを実行して、共有メモリの量を変更できます。
sysctl -w kern.ipc.shmall=32768
sysctl -w kern.ipc.shmmax=13421772
すると、「Gdk-WARNING **: shmget failed: error 12 (Cannot allocate memory)」が出なくなりました。
なんだ、オオカミ少年かと思ってたら、今度は本物か。
というわけで、FreeBSDのブート時にも自動的に設定されるようにするために、/boot/loader.confに
kern.ipc.shmall=32768
kern.ipc.shmmax=134217728
と書き加えておきました。この設定は、PostgreSQLを動かしているFreeBSDなサーバーと、同じにしただけです。
共有メモリの使用状況は、「ipcs -a」コマンドで確認できます。
# ipcs -a
Message Queues:
T ID KEY MODE OWNER GROUP CREATOR CGROUP CBYTES QNUM QBYTES LSPID LRPID STIME RTIME CTIME
Shared Memory:
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME
m 65536 5432001 --rw------- pgsql pgsql pgsql pgsql 4 28270592 726 58285 13:53:14 9:52:09 8:03:22
m 283181057 0 --rw------- nhh nhh nhh nhh 2
(たくさんあるので省略)
Semaphores:
T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME
s 65536 5432001 --rw------- pgsql pgsql pgsql pgsql 17 8:03:22 8:03:22
s 65537 5432002 --rw------- pgsql pgsql pgsql pgsql 17 8:03:22 8:03:22
s 65538 5432003 --rw------- pgsql pgsql pgsql pgsql 17 15:01:21 8:03:22
・・・って、あれ、この手元のFreeBSDでも、なぜかPostgreSQLが動いてるぞ?!
どうやら、テストのために動かして、そのまま止めるのを忘れていたようです。
あ、PostgreSQLを動かしたから、デフォルト設定での共有メモリの容量では足りなくなっていた、ってことですか。
☆
共有メモリの量を増やして以来、firefoxやthunderbirdがキビキビ動くようになった気がするんですが、気のせいでしょうか。
いつのころからか、やけに画面描画がもっさりとするようになってきて、ストレスを感じていたんですが、もしかしてPostgreSQLを動かすようになって以来、画面描画がもっさりするようになっていたのかも?!
共有メモリって、フォント関係で使ってるんですかね?
firefoxもthunderbirdも、上記のwarningメッセージは見えてなかったので、共有メモリが原因だったとしても、まったく気づかず。
☆
shared memoryを、「共有された思い出」と誤訳すると、なんか、SF小説のテーマっぽく感じる。
「地球上の人類すべては、太古から引き継がれた共通の記憶を共有している。それは・・・」みたいなノリで。
0 件のコメント:
コメントを投稿