SUPER preloading internals

Şuraya atla: kullan, ara

Bu sayfa, önyükleme (preloading) hakkında bazı teknik bilgiler vermektedir. Ortalama kullanıcı değil, geliştiriciler içindir.


Önyükleme Programının kendisi

Tüm önyüklemenin merkezi, stdin'inden hangi dosyaların önyüklenmesi gerektiğini belirten komutları okuyan /sbin/preload'dur. Önyükleme, daha sonra çekirdeğe belirli bir dosyanın yakında kullanılacağını söylemek için posix_fadvise sistem çağrısını kullanır. Çekirdek, buna, dosyayı, dosya sistemi önbelleğine yükleyerek karşılık verir. posix_fadvise ile ilgili daha fazla ayrıntı için "man posix_fadvise"ye bakın. Önyükleme koşturulabiliri ve burada söz edilen diğer programlar öntanımlı olarak yüklenen "önyükleme" paketinin parçasıdır.


Önyükleme çevresindeki altyapı

Bir uygulama için hangi dosyaların önyüklenmesi gerektiği /etc/preload.d 'deki dosyalardan görülebilir. Bazı girişlerin "open" (açık), diğerlerinin "stat" (istatistik) ile başladığına dikkat edin. Open (açık) içeriğin önyüklenmesi gerektiği, stat (istatistik) ise bu dosyanın sadece önyükleme programı tarafından istatistik için bakılacağı anlamına gelir. Şuna dikkat edin: örn. OpenOffice 338 dosyaya istatistik için bakmaktadır, o nedenle bunun bir etkisi var.


Ancak, bu listeler belirli bir sırada değildir (bazıları alfabetik, bazıları değildir). Bunların önyüklemeye beslenmeleri için, /usr/bin/prepare_preload tarafından işlenmeleri gerekmektedir. Dürüst olmak gerekirse, bunların hangi ölçüte göre tekrar sıralandığı hakkında bir düşüncem yok. Ama sanırım, dosyaların daha da hızlı okunmasını sağlamak için, sabit diskteki fiziksel yerlerine göre sıralanıyorlar. Beni düzelt: Gerçekten bilen biri, lütfen, hatalıysam beni düzeltsin. Her neyse, eğer önyükleme kullanmak istiyorsanız, bunun tümüyle nasıl çalıştığını bilmeye gerek yok. Çalışıyor ve önemli olan da bu. Prepare_preload yeni listeleri /var/cache/preload/ 'de saklar.


/var/cache/preload/ 'deki listeler sisteminiz kapatıldığında güncellenecektir. /etc/init.d/boot.preload_early komut dosyası /usr/bin/update_preload 'u çağırır. Aynı zamanda /etc/preload.d/ 'de birşey değiştirdiğinizde update_preload 'u elle de çağırabilirsiniz.


Önyüklemenin kullanımı

Halihazırda önyüklemenin kullanıldığı 4 yer vardır:

- Başlatmada (booting), /etc/init.d/ 'deki boot.preload ve boot.preload_early komut dosyaları başlangıçta kullanılacak bazı dosyaları önyüklerler.

- Kullanıcı girişinden önce, /etc/init.d/earlykdm (kdebase3-kdm paketi) kdm ve KDE için gereken dosyaları önyükler.

- Kullanıcı girişi ekranı gösterilirken, /opt/kde3/share/config/kdm/kdmrc (kdebase3-SuSE paketi) KDE'nin önyüklendiğinden emin olur. Biraz gereksiz görünüyor, Stephan Kulow'a soracağım.

- KDE'ye kullanıcı girişi yapıldıktan sonra, /opt/kde3/share/autostart/appspreload.desktop /usr/bin/appspreloader.sh 'i çağıracaktır. KDE dışındaki Wmler (pencere yöneticileri) için, henüz önyükleme yok. Ama benim önyükleme hakkındaki özgün sayfamda bunu düzeltmek için bazı kırmalar (hack) bulabilirsiniz.

PePr'ın iç yapısı

pepr_update.sh'i çağırdığınızda tüm işlemlerinizi strace edecektir (çatallı işlemler de dahil), çıktıyı ~/.pepr/tmp 'a kaydedecektir. ENTER'e bastığınızda strace yapmayı bırakacak ve hangi dosyaların açıldığını (open)/istatistik için bakıldığını (stat) çözümler. Bu liste daha sonra prepare_preload işlenir ve sonuç çıktısı ~/.pepr/preloadfile 'a eklenir. /opt/kde3/share/autostart/ 'daki otomatik başlama (autostart) girişi kullanıcı KDE'yi başlattığında önyüklemeyi yapacaktır.