開発:さてそれで、どのプロセスがメモリを食ってるかなんですが。
基盤:top。
基盤:まずは、Gnomeそのものですね(笑)
開発:そもそもプログラム開発環境なので、audio だの evolutionほにゃららとか全部いらないよね。
基盤:どうやって黙らせますかね。
開発:うーん、昔流なら /etc/rc とか /etc/init とか。今流だと systemctl とかみたいですね。ウェブインタフェースでチキチキできる webmin というのがあったみたいだけど、今は apt search しても出てこないね。とりあえずは、単に Gnome 立ち上がらせずにテキストコンソールにしちゃうのが簡単だとも思うけど。
基盤:でもこの、/etc/default/grub というの、どうも思ったようになりませんねー。。。
* * *
社長:どうなりました?
開発:ようやく通りました。
社長:何が問題だったんでしょう?
開発:まあ、貧乏性と無知、ですかね。
社長:およよ。
基盤:技術的には、Mozilla がビルドに使う rustc が非常にメモリ食いで、1プロセスで4GB以上食う、枯渇して死ぬ、という問題です。貧乏根性でVMに4GBしかあげてません。あとOSが1.5GBのswapfileを用意しています。ですので、全プロセスの使用メモリを足して5.5GBに収まらないと、メモリ枯渇でプロセスが死にます。デフォルトの環境で、立ち上げ直後のメモリ使用状況がこうでした。
基盤:この時点で既に、残り4GBちょっとしかありません。ということで、大盤振舞いに4GBばかりswapon してやって、こうなりました。
基盤:見かけ上はとってもお大尽になりまして、あとはもうスルスルと、だと思ったのですが、実は、rustc の最終章で残り1GBを切ってヒヤヒヤだったんです。
開発:それであらためてゼロからビルドして負荷状況を眺めてたんですが、とてもうまく並列化されてるなと思いました。このVMに3コアあげているのですが、それぞれ100%近く使い切っている時が結構あります。こんなのとか。
基盤:一方でVMホストの物理ディスクへのアクセスは1MB/秒以下が続いてますから、遅いHDDでも全然問題ないかなって感じです。コアを6つあげれば、ビルド時間が半分近くになるんじゃないかと。まあ、ゼロからビルドすることは滅多にないので、実際にそこを追求するかどうかは別ですが。一時的にでも多数コアをあげるのも良いですし、Hyper/Vでいろいろ遊べそうです。
開発:それで基本的には一気通貫だったんですが、実は、最終章の幕切れ寸前、92分地点の ld でまたもやディスクフルやってしまいましてアボート。それに ld も4GB近くメモリを食うので、その点でも危険人物でした。ということで、ディスクを空けて make。
基盤:で、これが修了証書です。タイムスタンプは make 再開からの経過時間です。
基盤:で、促された通り mach run。
えんたー! ↓
基盤:めでたし。
開発:昨日、Firefox の mach run で XPCOM ガー!って怒られたのは、メモリかディスクの不足で、必要なファイルの配置作業が不完全だったのでは無いかと思います。一通り終えたので、この環境で Firefox と Thunderbird のクリーンインストールをもう一度流しておこうと思います。
社長:いやいや、大変でしたね。ですが、このビルド作業のおかげで、最近の事情を色々学んだり、忘れてた技を思い出したりできたんだと思います。いやー、よかったよかった。
開発:そうですね。結果的には、ごく普通にリソースがある環境でなら、Firefox も Thunderbird も、tarball をもらってきて make 一発なのだ、ということがわかりました。なんだかほっとしますね。
--
2020-0606 SatoxITS