wickedd-dhcp6の起動時間が遅い問題を回避する方法について記載します。
Table of Contents
1 wickedd-dhcp6の起動が遅い
IPv6ネットワークでない環境の場合、wickedd-dhcp6がタイムアウトしています。IPv6ネットワークの場合はDHCPv6の返答があるので、本問題は発生しないと思います。
> systemd-analyze Startup finished in 2.542s (kernel) + 1.382s (initrd) + 22.252s (userspace) = 26.177s
wickedd-dhcp6の起動が遅いという問題が報告されていますが、wicked-0.6.39-36.1でも上記の起動時間なので別の問題なのかもしれません。
2 回避策
wickedd-dhcp6.serviceを起動させなければ良いのですが、wicked.serviceから必ず起動するようになっています。そこでwickedd-dhcp6のウェイトとタイムアウトの値を変更するか、NetworkManager.serviceを使う方法で回避します。
2.1 wickedd-dhcp6をカスタマイズする
IPv4ネットワークの場合はwickedd-dhcp6のウェイトとタイムアウトの値を短くすることでwickedd-dhcp6の待ち時間が改善されます。
> diff -uprN /etc/sysconfig/network/dhcp{.org,} --- /etc/sysconfig/network/dhcp.org 2016-12-05 00:58:04.860081134 +0900 +++ /etc/sysconfig/network/dhcp 2016-12-05 01:05:54.648180334 +0900 @@ -239,7 +239,7 @@ DHCLIENT6_SLEEP="0" # When you increase this time, increase also the WAIT_FOR_INTERFACES variable # e.g. to a value twice as high as the time specified here. # -DHCLIENT6_WAIT_AT_BOOT="15" +DHCLIENT6_WAIT_AT_BOOT="1" ## Type: integer ## Default: "0" @@ -248,7 +248,7 @@ DHCLIENT6_WAIT_AT_BOOT="15" # not get a reply from the dhcp server. Before you set this variable, take a # look at DHCLIENT6_WAIT_AT_BOOT allowing to continue in background instead. # -DHCLIENT6_TIMEOUT="0" +DHCLIENT6_TIMEOUT="1" ## Type: list<rfc3004,string> ## Default: string
2.2 wicked.serviceではなくNetworkManager.serviceを使う
wicked.serviceではなくNetworkManager.serviceでネットワークインターフェースを初期化するようにします。ただし、wicked.serviceを使うのがおそらく本流なので、マイナーなカスタマイズになる恐れがあります。
> sudo systemctl disable wicked.service > sudo systemctl enable NetworkManager.service
3 実行結果
起動時間が15秒ほど短縮されました。
> systemd-analyze Startup finished in 2.552s (kernel) + 1.319s (initrd) + 3.260s (userspace) = 7.132s