2013年7月18日木曜日

FreeBSD/amd64 9系でzfs(+nfs) を使いメモリ不足に陥る

FreeBSD 9.0-RELEASE(amd64)にzfsでファイルシステムを構築し、職場のPCのサーバとして使っていたのですが、先日サーバがメモリ不足の症状でダウンしまして、なんだこりゃ?と。USBキーボードの抜き差しすら対応出来なくなるという。おそろしや…

どうも目一杯vfs.zfs.arc_maxまでカーネルメモリを使い込んだようで、他のサービスにおけるメモリ使用とぶつかってしまっていたようです。さらに、職場のサーバはLinux機をクライアントに持っていて、ユーザの /home/ 領域をnfsでサービスしています。9.0-RELEASEのzfsにはnfsを利用するとメモリリークが起きる、というバグがあり、9.1-RELEASEでは修正されています。(事実誤認してたかも知れないので削除。)というわけで、
・OSをFreeBSD 9.1-RELEASEへ更新 (freebsd-updateでさっと更新。楽でした。)
・zfsのメモリ利用量を見直す
という対応を取りました。

昨今のLinux機のデスクトップ環境(特にブラウザ類)はホームディレクトリへのアクセスが頻繁に起こりますので、zfsのarc利用頻度が高く、nfsもメモリを使います。あとWeeklyのcronが走った後もarcにメモリが大量に使われた形跡がありました。locatedbの作成かなにかでしょうか。

FreeBSD 9.1-RELEASE (amd64) ではメモリのチューニングがよく行われていて、8GBのメモリを搭載したPCでは目一杯メモリをzfs、特にarcで使うような設定が施されているように見えます。例えばこんな感じ。(sysctl -a で確認)

        kern.maxusers:                          384
        vm.kmem_size:                           8216244224
        vfs.zfs.arc_min:                        892812800
        vfs.zfs.arc_max:                        7142502400

ARC以外1GBもあれば足りるでしょ、みたいな実にギリギリを攻めるパラメータ。
しかしそれでは怖い。かなり。というわけで、/boot/loader.conf に

vfs.zfs.arc_max="5120M"

の記述を追加し、少しメモリに余裕が出来るようにしてみました。本体8GBですからファイルシステム以外の部分に3GB、と考えれば大丈夫、のはず。Xも使ってないし。


        kern.maxusers:                          384
        vm.kmem_size:                           8216244224
        vfs.zfs.arc_min:                        671088640
        vfs.zfs.arc_max:                        5368709120

数日稼働させて、zfs-stats -M の実行結果はこんな数値。
(zfs-stats は ports にあります。)

System Memory:

        0.26%   20.27   MiB Active,     1.52%   118.75  MiB Inact
        71.22%  5.45    GiB Wired,      0.00%   0 Cache
        27.00%  2.07    GiB Free,       0.01%   736.00  KiB Gap

        Real Installed:                         8.00    GiB
        Real Available:                 98.93%  7.91    GiB
        Real Managed:                   96.68%  7.65    GiB

        Logical Total:                          8.00    GiB
        Logical Used:                   72.73%  5.82    GiB
        Logical Free:                   27.27%  2.18    GiB

Kernel Memory:                                  3.49    GiB
        Data:                           99.41%  3.47    GiB
        Text:                           0.59%   21.19   MiB

Kernel Memory Map:                              7.57    GiB
        Size:                           40.64%  3.08    GiB
        Free:                           59.36%  4.49    GiB

ARC関係の数値だと

ARC Summary: (HEALTHY)
ARC Misc:
ARC Size:                               76.20%  3.81    GiB

となっているので、Logical Used が 5.82GiBに対して ARC Sizeが 3.81GiB ということは、ARC以外で約2GB使っている、ということですから、やはり /boot/loader.conf で vfs.zfs.arc_max を絞る設定はしておいたほうがよいみたいですね。しばらくこれでいってみたいと思います。

2013年4月4日木曜日

pkgngに移行しようかと思ったけどやめた話

手元のFreeBSD 9.0-RELEASE機で、pkgngを使ってみようかと思ったのですが、移行作業をしたあとリポジトリにアクセス出来ないことに気づき困っていたところ、wikiに
https://wiki.freebsd.org/pkgng#Availability_of_pkgs_for_Download
for the time being pre-compiled packages for pkgng are not available from any official FreeBSD repository.
などと書かれており大変残念な状況にあることが分かりました。例によって気づきの順番が逆です……

で、どうしたか。
なかったことにしました。
pkgngをportsからインストールしてpkg2ngを実行したときのメッセージにありましたね。
# cd /var/db/
# mv pkg pkg.ng
# mv pkg.bak pkg
# pkg_info -aI
en-freebsd-doc-20111014 Documentation from the FreeBSD Documentation Project
libffi-3.0.9        Foreign Function Interface
libyaml-0.1.4_1     A YAML 1.1 parser and emitter written in C
lv-4.51             Powerful Multilingual File Viewer
...
# pkg_delete pkg-1.0.11
#
普通に表示出来るし。普通に消せるし。よかったよかった。 /etc/make.conf もきちんと編集しなおしておきました。もう少し待とう。

2012年5月16日水曜日

オープンセミナー2012@岡山に行ってきました

すっかり恒例行事となりました オープンセミナー2012@岡山 を今年も聞きに行きました。ここ数年は聞いてばかりですね。アクティビティが下がっていることがバレバレなのが恐縮です。
 さて今年の内容は、具体的なサービスやシステムに関する発表が前半4件、ソフトウェア開発や文化にまつわる大きな話が2件、という形でした。
  • 『チャットワーク』のAWS, GAE活用事例 (   藤原 吉規  さん @twingo_b   )
  • RubyやRailsにまつわるエトセトラ (   山口真央 さん @gutch_jp   ) 
  • Kinect for Windows SDKで遊んでみた。 (  藤原恵美子 さん )
  • NFC(近距離無線通信)とクラウド上の音楽のストリーミング再生について (  寺園 聖文 さん  @yokmama   ) 
  • この先生きのこるためには (   和田 卓人さん @t_wada   )
  • オープンソース? それっておいしいの? - オープンソースでご飯を食べ続ける話 ( 小飼弾さん @dankogai )
まとめサイトにtwitter上の感想がまとめられていますので、そちらをご覧下さい。私も会場からtweetしていました。

オープンセミナー2012@岡山まとめ #OSO2012
http://togetter.com/li/301802

 前半4件は様々なサービスや背景技術についての発表。チャットワークはここ最近の勢いが目覚ましいですね。Ruby on Rails, Kinect, NFCといったテーマもそれぞれタイムリーな内容が多く、実例も豊富で盛り上がった講演でした。
 後半2件の発表はとても示唆に富む講演だったと思います。
 和田さんの講演では、ソフトウェア開発に対しテスト駆動開発という方法について示し、その観点から、ソフトウェア開発などへの取り組みがどのような形になるのか説明されていました。和田さんがどういった経緯でその境地に至ったのか、自らの経験を踏まえ、とても興味深く示されていたのが印象的でした。現在ソフトウェア開発に携わっている方々にとって、テスト駆動開発の話のみならず、自分のキャリアを考える上でとても心強い講演だったのではないでしょうか。
 一方小飼さんの講演は、オープンソースソフトウェアに関するプロジェクトやそれに関わる個人や組織などを『仕事』という観点から俯瞰し、ソフトウェア産業における価値観を再考するものでした。講演という形ではありましたが、聴講者とのコミュニケーションを通して様々なことを考える、従来の講演とはまた違った形だったのが面白かったですね。オープンソースソフトウェアの開発からプロジェクトの取り仕切り、さらに異色とも思える様々な仕事を手がけ、物事の基本に都度立ち返られた経験が滲み出ていた講演であったなあと思います。

講演者の方々の貴重な経験や体験を岡山で聴くことが出来、今年も大変充実したイベントとなっておりました。来年も楽しみにしています。

余談:懇親会は相変わらずの濃度でした(笑)