OpenBSD: Biglock

Címkék

OpenBSD? Biglock? Az SMP-ben (Symmetric Multi Processing) járatosak erre két szóra biztos felkapják a fejüket. Mit is jelent a Biglock? A biglock-ot a több processzoros rendszerekben használják, a neve a Big Kernel Lock (BKL) szavakból áll össze. A biglock feladata működése: ha egy processz végre akar hajtódni, akkor tartania kell a Biglock-ot. Ha a BKL-t egy másik processz "fogja", akkor a futni kívánó processznek várnia kell addig, amíg a Biglock fel nem szabadul. Láthatjuk, hogy ez nem egy optimális működés, a Biglock elképzelés egy nagyon egyszerű SMP implementáció, és egy kicsit idejétmúlt.

Ennek ellenére nagy szó ez az OpenBSD-s világban, ahol egyelőre csak néhány erőtlen próbálkozás volt eddig a több processzoros támogatás megvalósítására. Most Niklas Hallqvist állt elő egy Biglock ötlettel. Az implementáció többé-kevésbé működik, a kód a NetBSD-ből került portolásra. További fejlemények várhatóak az OpenBSD SMP ügyében. Szóval van remény ;-)

Niklas levele:List: openbsd-cvs

Subject: CVS: cvs.openbsd.org: src

From: Niklas Hallqvist

Date: 2003-05-15 4:08:03

[Download message RAW]

CVSROOT: /cvs

Module name: src

Changes by: niklas@cvs.openbsd.org 2003/05/14 22:08:03

Modified files:

sys/arch/i386/i386: Tag: SMP apm.c bios.c cpu.c gdt.c

genassym.cf ipifuncs.c lapic.c locore.s

machdep.c mptramp.s process_machdep.c trap.c

sys/arch/i386/include: Tag: SMP cpu.h gdt.h intr.h lock.h

segments.h

sys/arch/i386/isa: Tag: SMP icu.s vector.s

sys/arch/i386/pci: Tag: SMP pci_machdep.c

sys/dev/pci : Tag: SMP cy82c693.c

sys/kern : Tag: SMP init_main.c init_sysent.c kern_exit.c

kern_fork.c kern_lock.c kern_resource.c

kern_sig.c kern_synch.c subr_pool.c subr_prf.c

sys_generic.c sys_process.c syscalls.c tty.c

vnode_if.c

sys/sys : Tag: SMP lock.h proc.h sched.h signalvar.h

simplelock.h syscall.h syscallargs.h systm.h

vnode_if.h

Log message:

Biglock! Most of the logic comes from NetBSD. Also a lot of fixes, enough to get a dual cpu machine actually run MP for a

very short while (we are just talking about seconds) before starving out one of the cpus. More coming very soon.

Hozzászólások

A FreeBSD 1988. oktobere ota tamogatja a tobbprocesszoros rendszereket. Ez a FreeBSD 3.0-val jott ha jol emlekszem. Ez egy egyprocesszoros rendszert szimulalt multiprocesszoros kornyezetben. Akkor meg a Biglock megoldas volt. Azota nekialltak uj SMP kodot irni, es a FreeBSD 5.0 ban elvileg bemutatkozott az SMPng az "uj generacios SMP" kod. Aztan BSDi es a Walnut Creek merge utan a FreeBSD-sek elgondolkoztak azon hogy uj kod kene. A BSD/OS forraskodjat megosztottak a FreeBSD fejlesztokkel, igy lehetoseg volt elobbrelepni. A nagy valtozast mindenkeppen az SMPng-nek kell hoznia.

Stabil, tiszta kodot eppugy meg lehetett volna irni n evvel korabban is.

Az okot szerintem inkabb ott kellene keresni hogy valoszinuleg keves

fejlesztonek volt/van tesztgepe es kevesebb a tamogatas a nagyvallalatok

reszerol.

Es nem csak SMP teren vannak hianyossagok, peldaul nemregiben committoltak

valamelyik BSDhez supportot a PAE-hez. Es akkor meg nem beszeltunk

NUMA-rol, SMT-rol, HA-rol, ... Nekem ugy tunik a FreeBSD all me'g a

legjobban, mintha az kapna a legtobb marketinget es supportot.

Odáig igazad van, hogy a stabil és jó kódot sokkal hamarabb is meg lehetett volna írni.

Azonban ehhez kell megfelelő mennyiségű fejlesztőtábor, aki _képes_ ezt megírni, és tesztelni.

Ha csak a képességeken múlna, akkor már a GNU/Hurd is sokkal előrébb járna. Néhány embernek (elég kevésnek) megvan az a képessége, hogy átlássa a Hurd-ot. Mégis ott tart, ahol tart!