Çekirdek içinde derlenmiş çekirdek modülünün faydaları nelerdir?


Yanıtlar:


7

Değişir. Az miktarda belleğiniz varsa, modüllerin kullanımı her seferinde yeniden yüklenmedikçe özgeçmişini artırabilir (2 GiB RAM'de önemli buldum, ancak geleneksel sabit disklerde 4 GiB'de değil). Bu, özellikle pil modülündeki bir hata nedeniyle (derlenmiş veya modül olarak değil) başlamak için çok uzun sürdü (birkaç dakika). Gentoo üzerinde hata olmasa bile, systemd-analysissadece statik olarak derlenmiş çekirdekten modüllere geçerek 33'lerden 18'lere kadar olan süreyi kısaltmayı başardım - 'şaşırtıcı bir şekilde' çekirdeğin başlangıcı 9'lardan 1.5'lere değişti.

Ayrıca, hangi donanımı kullanacağınızı bilmediğinizde, modüller açıkça faydalıdır.

PS. Hayati sürücüleri bile initrd'e dahil ettiğiniz sürece modüller olarak derleyebilirsiniz. Örneğin, dağıtımlar yükleme sırasında initrd içindeki /, sabitdisk sürücülerinin vb. Sistemlerini içerecektir.


Bu cevabı tekrar dikkatlice okur musunuz? Yapardım, ama yerinde ne demek istediğini bilmiyorum, örneğin ... geleneksel sabit disklerde .
tshepang

Manyetik olanlardan bahsettim (SSD ile ilgili hiçbir deneyimim yok).
Maciej Piechotka

Bunu daha okunaklı hale getirmeye çalıştım. Vidalamadığımı kontrol edebilir misin?
tshepang

Teşekkürler. Sınav oturumunu yeni bitirdim, bu yüzden bakmak için zamanım olmadı.
Maciej Piechotka

7

Bildiğim kadarıyla, hız farkı yok.

Tahsislerin ayrıntı düzeyi bir sayfa olduğu için birkaç kB çekirdek bellek kazanacağınızı düşünüyorum, bu nedenle tipik mimaride her modül, modül başına ortalama 2kB (½ sayfa) harcar. Gömülü sistemlerde bile bu pek önemli değil. Ayrıca, çekirdekler ile aynı şekilde sıkıştırılabildiği için biraz disk alanı kazanırsınız; depolama alanı az olan gömülü sistemlerde daha alakalı olabilir.

Modülleri tamamen dağıtabiliyorsanız, küçük bir çekirdek belleği (modül yükleyiciye gerek yoktur), disk alanı (modül yardımcı programlarına gerek yoktur) ve sistem karmaşıklığını (modül yüklemenize dağıtımınıza bir özellik olarak eklemenize gerek yoktur) ). Bu noktalar, donanımın genişletilemediği bazı gömülü tasarımlarda oldukça caziptir.


Bir modüldeki bir sembole erişmek biraz daha yavaştır (bir dolaylılık söz konusudur). Ancak ek esneklik (gerektiği gibi yükleyebilir / boşaltabilir, kullanımdaki kesin donanım için elle uyarlanmış bir çekirdek oluşturmak zorunda değilsiniz, ...) buna değer (çok kısıtlı bir ortam için inşa etmiyorsanız) asla değişmez).
vonbrand

4

Birkaç potansiyel fayda. Performans tartışmalıdır. Dinamik bir yükleyiciyle ilişkili bazı çalışma zamanı ek yüklerinden kaçınabilirsiniz, ancak gerçek zamanlı bir zamanlayıcıya bağlı olmadığınız sürece bunun büyük bir sorun olduğundan şüpheliyim.

Sisteminizdeki büyük sayfalardan yararlanıyorsanız, belki de daha büyük bir statik çekirdek görüntüsü oluşturmak, sayfa tanımlayıcı önbelleğini daha verimli kullanmanız anlamına gelir. Bazı sistemler çekirdeği tek bir bellek bölgesine sıkıca sığacak şekilde 'kafesleyecektir', bu da küçük ve büyük olasılıkla büyük sayfa hataları nedeniyle bir miktar gecikmeyi azaltabilir.

Mimari olarak, daha az bağımsız modülün bakımının daha kolay olduğunu ve esneklik kaybının önemli olmadığını savunarak Tek Büyük Görüntü sunmak size uygun olabilir. Bu tür akıl yürütmenin çoğu, stil ve uygulama konularına girer.


2

Bazen gerekli olabilir. Bazı hayati sürücüleri (örn. SCSI sürücüsü) bir modül olarak derlerseniz sisteminiz önyükleme yapmaz.

İçin bir diğer büyük aday değil bir modül olarak derleme kök bölümünün dosya sistemi türüdür. Eğer çekirdek ext3okumayı anlamıyorsa /lib/modules/, ondan modülleri nasıl yükleyecek?

Bunu şu şekilde düşünün: modülleri kullanmak için, çekirdeğin çekirdek modüllerini okumak ve yüklemek için sisteminiz hakkında yeterli bilgiye sahip olması gerekir. Bunu kullanın ve deneme yanılma :-)


Ben düşünüyorum bazı performans artırmak? Hiç var mı?
phunehehe

1
Geçmişte insanlar sadece gerekli olan en küçük çekirdeği üretmek için büyük çaba harcadılar . Bugün bu büyük ölçüde değişti. Aslında, bir modülü ilk yüklediğinizde küçük bir performans düşüşü yaşayacaksınız. Bu, çekirdekteki her şeyi derlemeniz gerektiği anlamına gelmez
nc3b

hayati önem taşıyan sürücü veya işlevsellik için herhangi bir faydası var mı? örneğin, sadece başka bir ihtiyaç veya işlevsellik olmadan ağ yardımcı programı terminalini ve demetini kullanmak istersem. tüm gerekli modülü ve sürücüyü yüklenebilir modül olmadan çekirdek içinde derlememin faydası var mı?
uray

3
Boğa. Bir sistem, bir initrd içinde bir modül olarak bir SCSI sürücüsü ile önyükleme yapar. Onlar bunun için.
wzzrd

Evet ... bunun için modülün çekirdeğin anlayabileceği bir
başlangıç ​​olması koşuluyla

2

Çekirdek içindeki yerleşik donanım için her sürücüyü statik olarak derliyorum. İstisna, kalıcı olmayan bir donanım olabilir (örneğin, usb bağlantılı donanım).

Donanım yapılandırmamın yakın zamanda değişmesi muhtemel olmadığından, modüllerle uğraşmam.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.