[Gelistirici] r57490 - in playground/ozan/mudur: . bin
Ozan Çağlayan
ozan at pardus.org.tr
28 Ara 2008 Paz 02:33:47 EET
Onur Küçük wrote:
>
> Bende normal depo paketleriyle de X in gelmesi uzun sürüyor. Orada
> fazlaca vakit kaybediyoruz, incelemek lazım niye uzun sürdüğünü.
> Headstart kullanmamıza rağmen müdür bitmeden X görüntüsü geldiğini
> görmedim hiç. Birşeyleri atlıyor olabiliriz.
>
Ben biraz daha kurcaladım akşamüstü bu işleri, gözlemlerim şöyle:
anladığım kadarıyla servisleri başlatan dbus çağrısının *kendisi*
senkron ancak servis başlatma süreci asenkron, yani sysklogd'yi
başlatmak için dbus çağrısı yaptığımızda başlayana kadar beklemiyoruz
onu bekleyen comarjob.
genel bottlenecklere baktığımda,
1. dbus başlatıldığında dbus soketini bekleyen waitBus çağrısı ~0.2s
sürüyor,
2. sysklogd başlatıldıktan sonra /dev/log'u bekleyen waitBus çağrısı
~1.4s sürüyor,
3. headstart'tan sonra /tmp/.X11-unix/X0 soketini bekleyen waitBus
çağrısı ise en iyi ihtimalle bende ~4.8s sürüyor.
headstarttan sonra 5-6 kadar daha servis başlatılıyor ancak bu
servislerin başlatılma çağrıları kabaca atomik denebilecek sürelerde
sonlandığından müdür X soketini de beklemek zorunda kalıyor. headstart'ı
başlatmayı yukarı çektim startNetwork'ten de önceye yine de çok bir şey
farketmedi. Pratikte bizim X'i değil X'in bizi beklemesi lazım hızlı bir
açılış için. X'i başlatabildiğimiz en erken noktada başlatmalıyız. Eğer
X'in başlamasında bir engel yoksa, default runlevel'in ilk adımında bunu
yaparak biraz vakit kazanabiliriz. Bunun için tek engel dbus, onu da
makul bir yere çekip daha önce başlatabiliriz.
Aynı şey sysklogd için de geçerli. sysklogd'nin servis betiği waitBus
ile soketi beklediği halde, müdür servis betiklerinin sonlanmasını
beklemediği için o da ayrıca waitBus ile bekliyor. sysklogd'nin
soketinin yaratılması neden 1.5s gibi oldukça uzun bir sürede
gerçekleşiyor gerçekten anlamak zor. sysklogd çok temel bir hizmet
olduğundan onu da eğer bir engel yoksa boot runlevel'ında falan
başlatırsak o süreyi elimine edebiliriz.
Bir başka fikrim /var ve /tmp dizinlerinin bilgisayarın açılışında değil
kapanışında temizlenmesi. Bunlar *volatile* dizinler olduğuna göre,
sistemi kapattığında çoktan silinmiş olmalılar teorik bir bakış açısıyla
ama biz bir sonraki açılışta temizliyoruz, ikisinin temizlenmesi 1
saniyeye yakın süre alıyor.
Fikirler gelsin :)
--
Ozan Çağlayan
<ozan_at_pardus.org.tr>
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi