# [gelöst] kernel 2.6.37 Big Kernel Lock

## flammenflitzer

```
....Linux 2.6.37 ist zudem der erste moderne Linux-Kernel, der komplett ohne das Big Kernel Lock (BKL) arbeiten kann, das früher die Leistung auf Multicore-Prozessoren und SMP-Maschinen einschränkt...
```

Siehe auch:

http://www.golem.de/1101/80484.html

Wie configuriere ich den kernel?

```
Big Kernel Lock (BKL)

CONFIG_BKL:

This is the traditional lock that is used in old code instead

of proper locking. All drivers that use the BKL should depend

on this symbol.

Say Y here unless you are working on removing the BKL.

Symbol: BKL [=y]

Type : boolean

Prompt: Big Kernel Lock

Defined at lib/Kconfig.debug:472

Depends on: SMP [=y] || PREEMPT [=n]

Location:

-> Kernel hacking
```

Nur entfernen? Oder muss ich dafür etwas anderes aktivieren?Last edited by flammenflitzer on Wed Jan 12, 2011 5:11 pm; edited 1 time in total

----------

## manuels

Soweit ich weiß, kannst du den einfach entfernen.

Er wird nur noch für ältere Module der Kernels benötigt (dann musst du ihn aktivieren um die Module aktivieren zu können).

----------

## Josef.95

Ich bin auch grad ein wenig dabei mich mit dem neuen 2.6.37er Kernel zu beschäftigen. Soweit ich bisher gesehen hab sollte man mit dem deaktivieren von  Big Kernel Lock (BKL) ein wenig vorsichtig sein, mir fehlte zb das udf Modul, dieses ist zb noch abhängig von BKL  *Quote:*   

> Prompt: UDF file system support
> 
> Defined at fs/udf/Kconfig:1
> 
> Depends on: BLOCK [=y] && BKL [=n]
> ...

 

Ich hätte eigentlich erwartet das man BKL gar nicht deaktivieren kann sofern andere gesetzte Treiber davon abhängen, aber dem ist nicht so....

Sprich: man sollte mit der Deaktivierung von BLK ein wenig vorsichtig sein  :Wink: 

----------

## franzf

Ich würds noch nicht rausschmeißen. Die paar Wochen bis zum nächsten Release - wo die restlichen noch BKL-anhängigen Treiber wie udf auf BKL-frei umgestlellt sein werden - kann ich noch mit BKL leben. Mein Desktop hat sowieso noch nen Uralt-Singlecore, da ist die zusätzliche Performance nicht wirklich spürbar - so was dazu gesagt wurde, ist das vor allem eine Besserung für Multicore-System (3x so schnelles ext4 bei 48 Cores hab ich gelesen ^^)Last edited by franzf on Fri Jan 07, 2011 2:06 pm; edited 1 time in total

----------

## kernelOfTruth

 *Josef.95 wrote:*   

> Ich bin auch grad ein wenig dabei mich mit dem neuen 2.6.37er Kernel zu beschäftigen. Soweit ich bisher gesehen hab sollte man mit dem deaktivieren von  Big Kernel Lock (BKL) ein wenig vorsichtig sein, mir fehlte zb das udf Modul, dieses ist zb noch abhängig von BKL  *Quote:*   Prompt: UDF file system support
> 
> Defined at fs/udf/Kconfig:1
> 
> Depends on: BLOCK [=y] && BKL [=n]
> ...

 

das wollt ich auch gerade schreiben  :Wink: 

also wer mit DVDs oder CDs herumhantieren muss, die eventuell UDF einsetzen (unterstützt Dateigrößen >4GB) sollte den BKL noch drin lassen

mit 2.6.38 oder so sollte er wohl nicht mehr nötig sein

----------

## flammenflitzer

Wenn das die einzige Abhängigkeit ist. Ist ewig her, das ich mal eine Scheibe eingelegt habe. Und betrifft ja wohl auch nur DVD.

----------

## Josef.95

 *flammenflitzer wrote:*   

> Wenn das die einzige Abhängigkeit ist ....

  Da wäre ich mir eben nicht sicher...

Das tückische ist ja wenn du schon eine nahezu fertige Konfiguration hast und dann BKL deaktivierst, dann werden auch die abhängigen Treiber (ohne Vorwarnung) mit deaktiviert. (ich hab es auch erst nach dem booten anhand des fehlenden udf Moduls gemerkt.)

Kennt jemand eventuelle ein Befehl oder eine Quelle mit der man herausfinden kann welche Treiber noch alle von BKL abhängen?

Im zweifel würde ich BKL auch noch aktiviert lassen.

----------

## kernelOfTruth

 *Josef.95 wrote:*   

>  *flammenflitzer wrote:*   Wenn das die einzige Abhängigkeit ist ....  Da wäre ich mir eben nicht sicher...
> 
> Das tückische ist ja wenn du schon eine nahezu fertige Konfiguration hast und dann BKL deaktivierst, dann werden auch die abhängigen Treiber (ohne Vorwarnung) mit deaktiviert. (ich hab es auch erst nach dem booten anhand des fehlenden udf Moduls gemerkt.)
> 
> Kennt jemand eventuelle ein Befehl oder eine Quelle mit der man herausfinden kann welche Treiber noch alle von BKL abhängen?
> ...

 

 kernelnewbies  :Wink:   (wird wohl nicht ganz aktuell gehalten was noch übrig bleibt)

 [PATCH 0/7] BKL removal follow-up 

----------

## manuels

Also, dass das UDF ein BKL benötigt, ist irgenwie schwierig einzusehen (bei einem Hardware-Treiber hätt ich es ja noch verstanden), aber z.B. wird genutzt um Dateioperationen "abzusichern" [Funktionsaufruf lock_kernel()].

Da scheint es sich wohl ein Kernelentwickler besonders einfach gemacht zu haben   :Laughing: .

Wie dem auch sei: Meines erachtens hast du keinen Geschwindigkeitsnachteil, wenn du den BKL einkompilierst. Er kommt dann nur zu tragen, wenn du das UDF nutzt (wenn ich mich irre, bitte korrigiert mich).

<geekmode>Es ist aber schon cooler einen OS-Kernel ohne BKL zu haben</geekmode>

EDIT: URL-Markup

----------

## SinoTech

 *manuels wrote:*   

> [...]
> 
> Wie dem auch sei: Meines erachtens hast du keinen Geschwindigkeitsnachteil, wenn du den BKL einkompilierst. Er kommt dann nur zu tragen, wenn du das UDF nutzt (wenn ich mich irre, bitte korrigiert mich).
> 
> [...]
> ...

 

Nein, das glaube ich nicht. Entwder BKL ist aktiv (es darf immer nur ein Thread Kernelcode ausführen) oder nicht. Unterscheidung zwischen Treibern die es brauchen und denen die es nicht brauchen wird es da sicher nicht geben.

 *manuels wrote:*   

> [...]
> 
> [...]
> 
> <geekmode>Es ist aber schon cooler einen OS-Kernel ohne BKL zu haben</geekmode>
> ...

 

Ack  :Wink: 

----------

## mv

 *manuels wrote:*   

> Da scheint es sich wohl ein Kernelentwickler besonders einfach gemacht zu haben  .

 

Das war ursprünglich bei jedem Dateisystem so gemacht worden. Deswegen sind jetzt zur Entfernung des BKL alle Filesysteme überarbeitet worden, und ein paar davon (u.a. UDF) sind bie 2.6.37 noch nicht rechtzeitig fertig geworden.

----------

## cryptosteve

Dafür ist die Option zum Entfernung vom BLK aber ganz schön gehyped worden. Möchte nicht wissen, wieviele da in den nächsten Tagen/Wochen noch auf die Nase fallen.  :Smile: 

----------

## manuels

 *SinoTech wrote:*   

> Entwder BKL ist aktiv (es darf immer nur ein Thread Kernelcode ausführen) oder nicht. Unterscheidung zwischen Treibern die es brauchen und denen die es nicht brauchen wird es da sicher nicht geben.

 Da muss ich dir widersprechen (oder ich hab dich falsch verstanden):

Das BKL wird nur aktiviert, wenn ein (Kernel-)Thread eine Aktion ausführt, die "Concurrency"-kritisch ist.

Da in fast allen anderen Kernel-Modulen die Funktion lock_kernel() gar nicht aufgerufen wird, wird das BKL in diesen Modulen auch gar nicht genutzt.

 *mv wrote:*   

>  *manuels wrote:*   Da scheint es sich wohl ein Kernelentwickler besonders einfach gemacht zu haben  . 
> 
> Das war ursprünglich bei jedem Dateisystem so gemacht worden. Deswegen sind jetzt zur Entfernung des BKL alle Filesysteme überarbeitet worden, und ein paar davon (u.a. UDF) sind bie 2.6.37 noch nicht rechtzeitig fertig geworden.

 

Alles faule Säcke  :Laughing: 

----------

## flammenflitzer

Funktioniert so nicht.Diverse Module werden nicht geladen. hald startet mit Fehlermeldungen und bei kdm hängt sich der Rechner auf. Ich nehme den kernel mit aktiviertem BKL.

----------

## Josef.95

 *flammenflitzer wrote:*   

> Funktioniert so nicht.Diverse Module werden nicht geladen. hald startet mit Fehlermeldungen und bei kdm hängt sich der Rechner auf. Ich nehme den kernel mit aktiviertem BKL.

 

Das wird aber vermutlich andere gründe haben, zumindest kann es hier nicht nachvollziehen. Bis auf das bei mir fehlende udf Modul, welches von kde nicht benötigt wird läuft kde hier einwandfrei. (ohne BKL)

Kannst du genauer benennen was für Module genau nicht mehr verfügbar sind?

@kernelOfTruth

Danke für die rausgesuchten Links!

----------

## SinoTech

 *manuels wrote:*   

>  *SinoTech wrote:*   Entwder BKL ist aktiv (es darf immer nur ein Thread Kernelcode ausführen) oder nicht. Unterscheidung zwischen Treibern die es brauchen und denen die es nicht brauchen wird es da sicher nicht geben. Da muss ich dir widersprechen (oder ich hab dich falsch verstanden):
> 
> Das BKL wird nur aktiviert, wenn ein (Kernel-)Thread eine Aktion ausführt, die "Concurrency"-kritisch ist.
> 
> Da in fast allen anderen Kernel-Modulen die Funktion lock_kernel() gar nicht aufgerufen wird, wird das BKL in diesen Modulen auch gar nicht genutzt.
> ...

 

Ja du hast recht. Ich bin davon ausgegangen das der Kernel das automatisch macht sobald ein Thread in den Kernelcode springt. Anscheinend wird das locking aber nur dann aktiv, wenn "lock_kernel" aufgerufen wird.

Cheers,

Sino

----------

## Randy Andy

 *kernelOfTruth wrote:*   

> 
> 
> also wer mit DVDs oder CDs herumhantieren muss, die eventuell UDF einsetzen (unterstützt Dateigrößen >4GB) sollte den BKL noch drin lassen
> 
> mit 2.6.38 oder so sollte er wohl nicht mehr nötig sein

 

Auch ich habe im Vorfeld einiges darüber gelesen und mit Spannung auf den Wegfall des BKL gewartet, leider erfuhr ich bei meinen Recherchen dass ich von der UDF Problematik betroffen sein würde (wegen meiner Nutzung von DVD-RAM, was aber nix mit der Unterstützung von Dateigrößen  >4GB zu tun hat)   :Wink: 

Praktische Tests hier belegen, seit dem ich den kernel ohne BKL einsetze, kann ich erwartungsgemäss nicht mehr auf meine DVD-RAM Scheiben zugreifen. 

Normale CD / DVD's dagegen sind kein Problem. So muss ich halt'n anderen kernel booten, wenn ich Zugriff auf DVD-RAM brauche, da ich noch ein wenig ohne BKL experimentieren möchte, hier auf meinem Quad-Core, wo es vielleicht ein wenig Sinn machen könnte.

Bin gespannt auf die nächste große Kompilierorgie von KDE-4.6, da werd ich das mal ausgiebig testen.

Gruß, Andy.

----------

## flammenflitzer

Ich habe den Rechner jetzt interaktiv gestartet(ohne BKL). 

Nach jedem Dienst kommt 

```
read: Interrupted system call
```

Aufgehangen hat er sich beim start von cdemud. (Würde ich schon gern ab und an nutzen.)

Folgende Module fehlen: (kein Beinbruch)

```
ieee1394 eth1394 raw1394

flammenflitzer linux # cat .config | grep 1394

# IEEE 1394 (FireWire) support

# CONFIG_DVB_FIREDTV_IEEE1394 is not set

# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
```

Alsa meldet:

```
 alsactl: set_control:1255: failed to obtain info for control #12 (no such file or directory)

alsactl: set_control:1255: failed to obtain info for control #12 (no such file or directory)

alsactl: set_control:1255: failed to obtain info for control #13 (no such file or directory)

alsactl: set_control:1255: failed to obtain info for control #14 (no such file or directory)

alsactl: set_control:1255: failed to obtain info for control #15 (no such file or directory)

alsactl: set_control:1255: failed to obtain info for control #18 (no such file or directory)

alsactl: set_control:1255: failed to obtain info for control #19 (no such file or directory)

```

```
flammenflitzer linux # cat .config | grep SND | grep -v \#

CONFIG_SND=y

CONFIG_SND_TIMER=m

CONFIG_SND_PCM=m

CONFIG_SND_HWDEP=m

CONFIG_SND_RAWMIDI=m

CONFIG_SND_JACK=y

CONFIG_SND_DYNAMIC_MINORS=y

CONFIG_SND_VMASTER=y

CONFIG_SND_DMA_SGBUF=y

CONFIG_SND_PCI=y

CONFIG_SND_HDA_INTEL=m

CONFIG_SND_HDA_HWDEP=y

CONFIG_SND_HDA_RECONFIG=y

CONFIG_SND_HDA_INPUT_BEEP=y

CONFIG_SND_HDA_INPUT_BEEP_MODE=1

CONFIG_SND_HDA_INPUT_JACK=y

CONFIG_SND_HDA_PATCH_LOADER=y

CONFIG_SND_HDA_CODEC_REALTEK=y

CONFIG_SND_HDA_CODEC_ANALOG=y

CONFIG_SND_HDA_CODEC_SIGMATEL=y

CONFIG_SND_HDA_CODEC_VIA=y

CONFIG_SND_HDA_CODEC_HDMI=y

CONFIG_SND_HDA_CODEC_CIRRUS=y

CONFIG_SND_HDA_CODEC_CONEXANT=y

CONFIG_SND_HDA_CODEC_CA0110=y

CONFIG_SND_HDA_CODEC_CMEDIA=y

CONFIG_SND_HDA_CODEC_SI3054=y

CONFIG_SND_HDA_GENERIC=y
```

Die alsa Meldung erscheint nicht, wenn die Soundtreiber als Module eingesetzt werden.Last edited by flammenflitzer on Sun Jan 09, 2011 8:47 pm; edited 1 time in total

----------

## manuels

Nur um sicher zu gehen: Mit BKL funktioniert alles mit _der selben Kernelversion_?

----------

## flammenflitzer

Auch mit BKL hat sich der Rechner aufgehangen. Habe ich mit BKL jetzt getestet. Der Rechner hängt sich in jedem Fall auf, wenn cdemud gestartet wird. Alsameldung behoben s.o. (Die gelisteten Module fehlen.)

http://sourceforge.net/tracker/index.php?func=detail&aid=3152330&group_id=93175&atid=603425

----------

