[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