systemdのこと

systemd使ってますか

Gentoo Linuxでもsystemdを使う人が増えてきた今日このごろ、皆さんもsystemdしているでしょうか。私はしていません。でもVirtualBox上のGentoo Linuxではしばらく前からsystemdを使っています。私は根っからのデスクトップユーザにしてアプリケーションユーザなので、技術的な考察などは守備範囲外なのですが、取り敢えずOpenRCとsysytemdとの違いとしてわかりやすい、起動時間の差を動画にしてみました。

ちょっと動画について補足説明します。
OpenRCはRC_PARALLEL="yes"を設定しています。
OpenRCで/etc/init.d/net.*ではなく/etc/init.d/dhcpcdを実行させています。こうすればdhcpcdがアドレス割り当てをバックグラウンドで待ちますので、若干他のサービス起動が速くなる、かもしれない。ricer的ですね……。
OpenRCと条件を揃えるために、systemdでもsyslog-ng, vixie-cron, ConsoleKitのサービスを起動しています。ですが、systemdではこれらのサービスが提供する機能をsystemdビルトイン機能で概ね置き換えることができます。

  • syslog -> systemd-journald
  • cron -> Timer unit
  • ConsoleKit -> systemd-logind

ということでsystemdではこれらのServiceを起動しなくても良いのですが、実は起動してもしなくても起動所要時間がほとんど変わらない(!!)ということがわかりました。systemd-analyzeによると、これら3つのサービスを起動した場合のuserspace起動時間は3309ms、起動しない場合は3005msとなって、0.3秒しか変化はありませんでした。

syslog-ngはin tree ebuildでインストールされるunitファイルが使えないので、野良リポジトリから新しいバージョンを入れています。
vixie-cronはunitファイルをインストールしないので、unitは自分で用意します。書くのは簡単ですが、このへんにも色々あります。

これからどうするの

日常的に使ってるGentoo Linux環境のsystemdへの本格的な移行は、今の所考えていませんが、いずれは移行しなきゃならないのかなあ。udevがsystemdが無いと動かなくなったら仕方ないですね。当面、それよりも先に問題になりそうなのはsystemd-logind関係で、現状既にConsoleKitはUpstream Dead、upowerもpm-utilsサポートをドロップしてsystemdの機能を使うことになりそうです。でもUbuntuがsystemd-logindを移植するような話が出ているので、どうなることやら。

HALが終わってデスクトップLinuxがpolkit/ConsoleKit/udisks/upowerに移行したのってたった3年くらい前の話なんですよね。もう3年経ったと言うべきなのか?

それはさておき

こんな動画を上げておいてなんですが、私はsystemdよりもOpenRCの方が好きです:-) 起動時間なんてそんなに重要じゃないし……(そもそもsystemdの売りは起動時間だけじゃないですが)。
でもGentoo is about choice.
systemd使いたければ使えばいいじゃない。Gentooでは両方使えるんだから。