Raspberry Pi bilgisayarının açılışı, çeşitli nedenler ile uzun sürebilir. Bu nedenler nadiren de olsa donanımsal olabileceği gibi genellikle yazılımsaldır. SD karttın arızalı olması veya son kapanışın ani enerji kesilmesi ile gerçekleşmesinden kaynaklanan veri hasarları açılış sürecini geciktirebilir. Bunun dışında Raspberry Pi’ın USB port’larına veya genişleme yuvalarına bağlı donanımlardan kaynaklanabilecek gecikmeler de yaşanabilir. Bir diğer unsur, kalitesiz, düşük güçlü ya da arızalı bir güç kaynağından sağlanan temiz olmayan DC akımıdır. Bu durumda da sistem kararsız çalışabilir açılış gecikebilir.
Raspberry Pi’ın ideal açılış süresi 25 saniye civarındadır. Bu sürede belirleyici olan ilk yazılımsal etken, açılışta otomatik olarak başlayan servislerdir. Hangi servisin açılışta ne kadar süre harcadığını görmek için systemd-analyze adlı araç oldukça faydalıdır. Aracı aşağıdaki gibi çalıştırdığınızda Linux çekirdeğinin ve çekirdek kapsamı dışında kalan servis ve programların (user space) açılışta ne kadar zaman harcadığını görüntüler.
1 2 3 |
pi@raspberry:~ $ systemd-analyze Startup finished in 4.546s (kernel) + 27.254s (userspace) = 31.801s |
Yukarıdaki ekran çıktısında açılışın toplamda 31 saniyede gerçekleştiği görülebilir. Daha detaylı bir açılış raporu görüntülemek isterseniz aşağıdaki gibi blame seçeneğini kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
pi@raspberry:~ $ systemd-analyze blame 15.440s dhcpcd.service 15.327s hciuart.service 8.274s mysql.service 3.059s apt-daily.service 1.585s raspi-config.service 1.512s apt-daily-upgrade.service 1.504s dev-mmcblk0p2.device 1.024s ssh.service 951ms Bluetooth.service 605ms keyboard-setup.service 505ms systemd-logind.service 456ms networking.service |
blame çıktısında her bir açılış parçasının ne kadar sürede yüklendiği gözükmektedir. Burada dhcpcd.service adlı servisin başı çektiği görülmektedir. Bu otomatik IP yapılandırması içi çalışan bir servistir ve kullandığı sürenin çoğunu ağdaki bir DHCP sunucusundan IP yapılandırması beklemek için geçirir. Raspberry Pi’a yeni bir paket yüklediğinizde, paketin neden olacağı olası açılış gecikmelerini blame ile takip etmek iyi bir davranıştır. Diğer servisler ve açılış birimleri hakkında daha fazla bilgiyi Google üzerinden veya man sayfalarından edinmek de kullanmakta olduğunuz sistemi tanımak ve öğrenmek açısından faydalıdır.
Yukarıdaki ekran çıktısında dikkatinizi çekmek istediğim bir konu da listelenen açılış parçalarının (unit) sürelerinin toplamının, toplam açılış süresinden (systemd-analyze time) fazla olduğudur. Burada listelenen süreler ilgili parçaların toplam çalışma süreleridir. Açılış süresi boyunca birden fazla parça aktif olarak çalışır yani aynı anda birçok açılış süreci (process) birlikte çalışabilir. Bu nedenle parçaların her birinin çalışma süresi toplamı, toplam açılış süresinden fazladır. Hangi parçanın ne zaman çalışmaya başladığı (sistemin ilk enerjilenmesinden itibaren) ve ne kadar süreyle çalıştığını görmek açısından systemd-analyze aracının plot seçeneği çok kullanışlıdır. Bu seçenek kullanıldığında ekrana açılış sürecini görsel bir grafikle ifade eden bir SVG kodu basılır. Bu SVG kodunu görüntülemenin en güzel yolu ekran çıktısını dosyaya kaydederek bir web tarayıcısında görüntülemektir. Aşağıdaki açılış süreci grafiğinin bir örneğini görebilirsiniz:
1 2 3 |
pi@raspberry:~ $ systemd-analyze plot pi@raspberry:~ $ systemd-analyze > acilis_analiz.svg |
systemd-analyze açılış süreci grafiği
Açılış sürecinin analizinde kullanabileceğiniz bir seçenek de critical-chain’dir. critical-chain seçeneği ile açılış sürecinin kritik süreçleri hakkında kullanışlı bir rapor görüntülenir. Bu raporda özellikle dikkat çekilmek istenen açılış süreçleri kırmızı ile renklendirilmiştir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
pi@raspberry:~ $ systemd-analyze critical-chain The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. graphical.target @27.222s └─multi-user.target @27.222s └─mysql.service @18.946s +8.274s └─network-online.target @18.940s └─network.target @18.916s └─dhcpcd.service @3.475s +15.440s └─basic.target @3.457s └─sockets.target @3.443s └─triggerhappy.socket @3.437s └─sysinit.target @3.416s └─systemd-timesyncd.service @3.051s +356ms └─systemd-tmpfiles-setup.service @2.912s +94ms └─local-fs.target @2.851s └─boot.mount @2.723s +117ms └─fsck@disk-by\x2dpart\x2d01.service @2.336s +381ms └─dev-disk-by\x2dpart\x2d01.device @2.331s |
Süreler ifade edilirken kullanılan @ işareti ilgili sürecin Raspberry Pi’ın açılışından itibaren kaçıncı saniye de başladığını + işareti ise sürecin aktif çalışmasının kaç saniye sürdüğünü gösterir.