abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 2
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 28
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 795 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Jaderné noviny - 17. 12. 2008

    29. 1. 2009 | Jirka Bourek | Jaderné noviny | 3682×

    Aktuální jádro: 2.6.28-rc8. Citáty týdne: Andrew Morton, Dave Jones. Systémová volání a 64bitové architektury. Sledujeme: čítače výkonnosti, ksplice a fsnotify. Čítače výkonnosti. Ksplice. fsnotify. SLQB - a už jsou čtyři.

    Obsah

    Aktuální jádro: 2.6.28-rc8

    link

    Současné vývojové jádro je stále 2.6.28-rc8; během minulého týdne nebyly vydány žádné předverze. Do gitového repozitáře hlavní řady pomalu přitékají další změny, v době psaní tohoto článku jich bylo od -rc8 začleněno 46.

    Otázka, kdy bude vydána konečná verze 2.6.28, zůstává otevřená. Zdá se, že Linus je nakloněn vydání před svátky, hlavně protože chce před začátkem linux.conf.au v lednu odstranit z cesty začleňovací okno. Seznam regresí je v tuto chvíli docela krátký, takže vydání v této době by bylo ospravedlnitelné.

    Současné stabilní jádro 2.6 je 2.6.27.9 vydané 13. prosince s dlouhým seznamem oprav. Stabilní vydání 2.6.27.10 obsahující dalších 22 patchů je revidováno v době psaní tohoto článku; pravděpodobně bude vydáno 18. prosince.

    Citáty týdne: Andrew Morton, Dave Jones

    link

    Jestliže je tvým záměrem tohle zaslat k začlenění do hlavní řady, pak bych ti doporučil v nejbližší možné fázi přestat pracovat na vlastnostech a přejít do fáze dokumentování, zasílání, revidování, začleňování a opravoopravoopravování. To může trvat i několik měsíců.

    Jakmile se věci stabilizují a bude se to chovat slušně, začni zase přemýšlet o vlastnostech.

    NECHYŤ SE do pasti přidávání víc a víc a víc věcí do projektu mimo strom. Jenom to ztěžuje a ztěžuje jeho začlenění. Jsou k tomu mnohé příklady.

    -- Andrew Morton (o Tux3)

    Jak bys reagoval na pár gigabytů "ipt_hook: veselé crackování.\n"?

    -- Dave Jones

    Systémová volání a 64bitové architektury

    link

    Nové systémové volání se do jádra nepřidává s lehkostí. Je důležité ho před začleněním udělat správně, protože jakmile je přidáno, musí být navždy udržováno jako součást jaderného binárního rozhraní. Návrh přidat systémová volání preadv() a pwritev() poskytuje skvělý příklad záležitostí, kterými je potřeba se zabývat, když se něco přidává k jadernému ABI.

    Tato dvě systémová volání jsou sama o sobě poměrně přímočará. V podstatě kombinují existující volání pread() a readv() (totéž pro zapisující variantu) do způsobu, jakým provádět rozsyp/sesbírej I/O operace na konkrétním posunutí [offset] souboru. Jako u pread() je současná pozice v souboru nezměněna. Volání, která jsou dostupná na různých BSD systémech, lze použít k vyhýbání se souběhům mezi voláním lseek() a čtením nebo zápisem. V současnosti se musí aplikace starat o nějaký druh zamykání, aby se jednotlivým vláknům zabránilo se při tomto druhu I/O ovlivnit.

    Prototypy funkcí vypadají podobně jako readv/writev, jednoduše přidávají offset jako poslední parametr:

    ssize_t preadv(int d, const struct iovec *iov, int iovcnt, off_t offset);
    ssize_t pwritev(int d, const struct iovec *iov, int iovcnt, off_t offset);

    Ale protože je off_t 64bitová hodnota, na některých architekturách to činí problémy kvůli způsobu, jakým se předávají argumenty systémových volání. Poté, co Gerd Hoffman zaslal druhou verzi sady patchů, Matthew Wilcox rychle poukázal na problém:

    Jsou tyto prototypy zapotřebí? Pokud ano, MIPS a PARISC okolo nich budou potřebovat obalovací funkce [wrapper]. Tyto dvě architektury mají ABI, které vyžaduje, aby byly 64bitové argumenty předávány v uspořádaných párech registrů, ale glibc to neví (a i kdyby věděla, vzhledem k existenci syscall(3) s tím stejně nemůže moc udělat), takže některé argumenty skončí ve špatných registrech.

    Některé další architektury (ARM, PowerPC, s390, ...) mají podobná omezení. Protože je offset čtvrtý parametr, umisťuje se do 32bitových registrů r3 a r4, ale některé architektury ho potřebují buď v r2/r3 nebo r4/r5. To vedlo některé lidi k doporučení změny pořadí parametrů a přesunutí offsetu před iovcnt, aby se problém obešel. A to dřív, než tato změna probublá do uživatelského prostoru. Gerd se změnou příliš nesouhlasí: Nicméně bych byl opravdu nerad, kdyby stejné systémové volání mělo na různých systémech různé pořadí argumentů.

    Zdálo se, že většina souhlasí s tím, že rozhraní do uživatelského prostoru tak, jak je prezentováno glibc, by se mělo shodovat s tím, co poskytuje BSD. Jinak to lidem, kteří se snaží psát standardy pro přenositelný kód, působí příliš mnoho bolestí hlavy. Aby se vyřešil problém s uspořádáním, systémové volání samo o sobě má změněné pořadí argumentů. To vedlo ke Gregově třetí verzi sady patchů, která stále nevyřešila celý problém.

    Je několik architektur, které mají 32 a 64bitové verze a 64bitové jádro musí podporovat systémová volání z 32bitových programů v uživatelském prostoru. Tyto programy vloží 64bitové argumenty do dvou registrů, ale 64bitové jádro je bude očekávat v jediném registru. Kvůli tomu Arnd Bergmann doporučil rozdělení offsetu na dva argumenty, jeden pro horních 32bitů a druhý pro spodní bity: Vidím to jako jediný způsob, který nám umožní sdílet compat_sys_preadv/pwritev na všech 64bitových architekturách.

    Když 32bitový program v uživatelském prostoru provede systémové volání na 64bitovém systému, rozdíly ve velikosti dat řeší verze funkce compat_sys_*. Jestliže je systémovému volání předán ukazatel na strukturu a tato struktura má na 32 bitech jinou reprezentaci než na 64 bitech, vrstva kompatibility provede překlad. Protože různé 64bitové architektury dělají, co se konvencí volání a požadavků na zarovnání týče, různé věci různě, jediný způsob, jakým sdílet compat kód, je zcela odstranit 64bitovou hodnotu z rozhraní systémového volání.

    Tím zbývá jenom jediný problém, který je potřeba překonat: endianitu. Jak poznamenává Ralf Baechle, MIPS může být jak little- tak big-endian, takže compat_sys_preadv/pwritev() musí obě 32bitové hodnoty offsetu složit ve správném pořadí. Doporučil přesunutí pro MIPS specifického makra merge_64() do společného include souboru compat.h, který by poté bylo možné použít ve společných compat funkcích. Zatím se čtvrtá verze sady patchů neobjevila, ale dá se předpokládat, že rozdělení argumentu offset a použití merge_64() bude její součástí.

    Implementace operace preadv() a pwritev() je velmi průzračná, rozhodně při porovnání se složitostmi předávání jejich argumentů. VFS implementace readv()/writev() již přebírají parametr posunutí, takže jde o jednoduchou záležitost volání těchto funkcí. Je zajímavé, že během revidování si Christoph Hellwig všiml chyby v existujících implementacích compat_sys_readv/writev(), které by vedly k neaktualizování účetních informací [accounting information] těchto volání.

    Není to poprvé, co jsou navržena tato systémová volání; už v roce 2005 jsme se dívali na nějaké patche, které zaslal Badari Pulavarty a které je přidávaly. Kromě krátkého výskytu v -mm stromě se zdá, že se ztratily. I kdyby se toto vydání preadv() a pwritev() do hlavní řady nedostalo - a zatím není žádný náznak, že jim v tom bude bráněno - revize kódu okolo něj byly rozhodně užitečné. Náznak toho, jaké složitosti představují 64bitové hodnoty předávané systémovým volání, byl také poučný.

    Sledujeme: čítače výkonnosti, ksplice a fsnotify

    link

    V několika oblastech, kterým se Jaderné noviny věnovaly v minulosti, nastal pokrok. Zde je rychlé pokračování o tom, jak věci stojí nyní.

    Čítače výkonnosti

    link

    V epizodě z minulého týdne rozhýbal diskuzi a určité množství opozice patch pro sledování výkonnosti, který se objevil z ničeho nic. Jednoduchost nového přístupu Inga Molnára a Thomase Gleixnera byla do určité míry přitažlivá, ale rozhodně není jisté, jestli je tento přístup dostatečně mocný, aby splnil potřeby komunity, která používá komplexnější sledování výkonnosti.

    Od té doby byly zaslány třetí a čtvrtá verze patche. Pohled na changelogy ukazuje, že práce na tomto kódu pokračuje rychle. Bylo provedeno mnoho změn včetně:

    • Přidání virtuálních čítačů výkonnosti pro sledování času hodin, výpadků stránek, přepínání kontextu a migrací mezi CPU.
    • Nová funkce "skupina výkonnostních čítačů". Tato vlastnost je míněna jako reakce na kritiku, že původní rozhraní neumožňuje číst několik čítačů naráz, což ztěžuje korelaci různých hodnot čítačů. Čítače lze nyní asociovat do několika skupin, které umožňují, aby se s nimi pracovalo jako s celkem. Je zde také nový mechanismus, který umožňuje všem čítačům zapnutí a vypnutí jedním systémovým voláním.
    • Rozhraní systémového volání bylo přepracováno; popis nového API vizte v oznámení verze tři.
    • Utilita kerneltop byla vylepšena, aby fungovala se skupinami čítačů výkonnosti.
    • Nyní je podporováno "dědění čítačů výkonnosti"; to v podstatě umožňuje utilitě sledující výkonnost sledovat proces přes fork() a sledovat i potomka(y).
    • Nová utilita "timec" spouští proces se sledováním výkonnosti, vypisuje celou sadu statistik o tom, jak proces běžel.

    Přirozeně jsou z tohoto nového přístupu ke sledování stále obavy. Vývojáři se bojí, že uživatelé nemusí být schopni získat informace, které potřebují, a stále se zdá, že bude potřeba vložit do jádra velké množství pro hardware specifických informací o programování čítačů. Nicméně v očích autora článku tato sada patchů nabývá známek nevyhnutelnosti, které se obvykle objevují u patchů od Inga a spol. Bude nicméně ještě nějaký čas trvat, než dojde k rozhodnutí.

    Ksplice

    link

    V listopadu jsme se dívali na novou verzi kódu Ksplice, který umožňuje vložit patche do běžícího jádra. Vývojáři Ksplice by rádi viděli svůj kód začleněný do hlavní řady, takže nedávno rýpli do Andrewa Mortona, aby se zeptali, jaký je stav. Jeho odpověď zněla:

    Je tu hodně ošidného kódu a dost vysoká údržba, řekl bych.

    Myslel bych si, že distra a jejich high-endoví zákazníci o to budou mít zájem, ale ničeho jsem si od nich nevšiml. Ne že by to mělo velký význam - náš proces pro sběr tohoto typu informací je přinejlepším rudimentární.

    Reakce v konferenci, jak už tak bývá, naznačovaly, že distributory ve skutečnosti tato vlastnost příliš nezajímá. Dave Jones komentoval:

    Je to pěkný hack, ale myšlenka na to, že to i malé procento našich uživatelů použije, mě děsí...

    Jestliže distra nejsou schopná vydat bezpečnostní aktualizace v rozumném čase, je potřeba opravit proces místo přidávání mechanismu, který ho obchází. Tím zbývá jenom argument "nemůžeme si dovolit downtime", což mě vede k otázce, jak dobře byly tyto patche revidovány. Poté, co jsem viděl některé z ne-ksplice runtime patchů, které se objevují za novou bezpečnostní dírou, nemůžu říct, že tomu příliš věřím.

    Vývojáři Ksplice souhlasí, že psát vlastní kód, který zajistí, aby se patche daly začlenit do běžícího jádra, je děsivý nápad; to je důvod, říkají, proč ušli svou cestu, aby takový kód většinou nebyl potřeba.

    Tato diskuze ponechává Ksplice v poněkud obtížné situaci; pokud nebude jasná poptávka, jaderní vývojáři pravděpodobně nebudou chtít začlenit patch tohoto druhu. Jestli jde o vlastnost, o kterou uživatelé opravdu stojí, měli by pravděpodobně tento fakt sdělit svým distributorům, kteří by poté mohli zvážit jeho podporu a zapracovat na protlačení projektu do hlavní řady.

    fsnotify

    link

    Mechanismus prohledávání souborů známý jako TALPA měl poněkud drsný start, co se interakce s jadernou komunitou týče. Mnoho vývojářů nemá rádo průmysl vyhledávající malware obecně a zaslaná implementace se jim nelíbila. Je nicméně jasné, že touha po této funkci nezmizí, takže vývojář Eric Paris pracoval na implementaci, která by prošla revizí.

    Jeho nejnovější pokus lze vidět v podobě sady patchů fsnotify. Tento kód sám o sobě nepodporuje funkci vyhledávání malwaru, ale, jak říká Eric: Lepší bude, když budete vědět, že se chystá. Místo toho vytváří nové, nízkoúrovňové upozorňovací mechanismy pro události v souborovém systému.

    Na první pohled se může zdát, že se používá ještě problematičtější přístup než předtím. Linux již má dva různé oznamovače událostí v souborech: dnotify a inotify. Jaderní vývojáři často vyjadřují svou nespokojenost s těmito rozhraními, ale nebylo příliš křiku, který by požadoval, aby někdo přidal třetí alternativu. Jaký smysl tedy má fsnotify?

    Ericův nápad zjevně spočívá v tom, aby vytvořil něco, co vylepšuje jádro, aby lidé neměli snahu stěžovat si na funkci vyhledávání malwaru. Proto bylo napsáno fsnotify - obsahuje mnoho podnětů od vývojářů souborových systémů - aby z něj byl lépe promyšlený a podporovatelný upozorňovací subsystém. Existující kód dnotify a inotify je poté vytržen a znovu implementován nad fsnotify. Konečným výsledkem je, že dopad na zbytek VFS kódu je ve skutečnosti snížen; nyní je jenom jedna sada volání oznamovačů tam, kde předtím byly dvě. A přesto byl upozorňovací mechanismus zobecněn, takže podporuje funkce, které v něm v minulosti nebyly.

    Krom toho se Ericovi podařilo zmenšit vnitřní strukturu inode. Vzhledem k tomu, že těchto struktur mohou být na běžícím systému tisíce, i malé omezení velikosti může znamenat velký rozdíl. Takže, jak tvrdí Eric: Přesně tak, můj kód je menší a rychlejší. Tumáte.

    Co kód nyní potřebuje, je detailní revize ze strany hlavních vývojářů VFS. Tito vývojáři bývají zdrojem, o který se hodně soupeří, takže není jisté, kdy budou schopni se na fsnotify pořádně podívat. Nicméně se zdá, že dřív či později si tato vlastnost najde cestu do hlavní řady.

    SLQB - a už jsou čtyři

    link

    Linux nemá nouzi o nízkoúrovňové správce paměti. Stařičký slab alokátor byl motorem funkcí jako kmalloc() a kmem_cache_alloc() po mnoho let. Nedávno byl přidán SLOB, ořezaný alokátor vhodný pro systémy, které nemají tolik paměti ke spravování. Ještě v bližší době byl jako navrhovaný náhradník slab začleněn SLUB, který, i když byl navržen pro systémy s velkou pamětí, byl míněn tak, aby byl použitelný i na menších systémech. Konsenzem z posledních let je, že alespoň jeden z těchto alokátorů znamená přebytek nad potřebami a musí odejít. Typicky byl za alokátor, který je navíc, považován slab, ale nepříjemné pochyby o SLUBu (a některé regrese výkonnosti ve specifických situacích) držely slab ve hře.

    Vzhledem k situaci by si jeden nemyslel, že jádro potřebuje ještě další alokátor. Nick Piggin si ale myslí, že navzdory přebytku nízkoúrovňových správců paměti je vždycky místo ještě pro jeden. Za tímto účelem vyvinul SLQB alokátor, o kterém doufá, že bude nakonec začleněn do hlavní řady. Podle Nicka:

    Pokračoval jsem v práci na SLQB alokátoru, protože nesouhlasím s volbami návrhu SLUB a mám obavu z tlaku na to, aby se stal tím jediným správným alokátorem.

    Jako jiné jako-slab alokátory, SLQB sedí na alokátoru stránek a stará se o alokaci objektů pevné velikosti. Byl navržen s ohledem na škálovatelnost na high-end systémech; také se skutečně snaží se vyhnout alokaci oblasti stránek, kdykoliv je to možné. Vyhnutí se alokacím vyšších řádů může významně zvýšit spolehlivost, když je paměti nedostatek.

    I když je v SLQB poměrně hodně ošidného kódu, základním algoritmům není těžké porozumět. Jako jiné jako-slab alokátory implementuje abstrakci slab cache - odkládací cache, ze které lze alokovat paměťové objekty pevné velikosti. Slab cache se používají přímo, když je paměť alokována funkcí kmem_cache_alloc(), či nepřímo pomocí funkcí jako kmalloc(). V SLQB je slab cache reprezentována datovou strukturou, která vypadá přibližně jako ta následující:

    SLQB slab data structure

    (Vezměte na vědomí, že kvůli zjednodušení diagramu bylo mnoho věcí zanedbáno.)

    Hlavní struktura kmem_cache obsahuje očekávané globální parametry - velikost objektů, které se alokují, řád alokací stránek, jméno cache atd. Škálovatelnost nicméně diktuje oddělit procesory od sebe, takže většina datové struktury kmem_cache je uložena v podobě "pro jednotlivá CPU jednotlivě". Konkrétně je pro každý procesor v systému jedna struktura mem_cache_cpu.

    V této struktuře pro konkrétní CPU lze najít mnoho seznamů objektů. Jeden z nich (freelist, seznam volných) obsahuje seznam dostupných objektů; když je zadán požadavek na alokaci objektu, na seznam volných se alokátor obrací nejdříve. Když jsou objekty uvolněny, vrací se na seznam. Vzhledem k tomu, že je seznam součástí struktury pro dané CPU, objekty běžně zůstávají na stejném CPU, takže se minimalizuje poskakování mezi cachemi. A ještě důležitější je, že rozhodnutí o alokaci jsou specifická pro CPU, takže zde není žádné špatné chování cache a kromě zakázání přerušení není potřeba žádné zamykání. Seznam volných je spravován jako zásobník, takže požadavky na alokaci vrátí nejnověji uvolněný objekt; tento přístup je opět použit jako pokus o optimalizaci chování cache paměti.

    SLQB bere svou paměť ve formě celých stránek od alokátoru stránek. Když je přijat požadavek na alokaci a seznam volných je prázdný, SLQB alokuje novou stránku a vrátí objekt z této stránky. Zbývající prostor ve stránce je zorganizován do seznamu volných pro konkrétní stránku (samozřejmě za předpokladu, že jsou objekty dostatečně malé na to, aby se do stránky vešel víc než jeden) a stránka je přidána do seznamu partial (částečné). Při požadavku na alokaci jsou vraceny ostatní objekty v této stránce, ale jenom v případě, že je seznam volných prázdný. Když je alokován poslední objekt ve stránce, SLQB na ni zapomene - alespoň dočasně.

    Objekty jsou po uvolnění přidány do seznamu volných. Je snadné předpovědět, že tento seznam může poměrně narůst po vyšší aktivitě systému. Umožnit seznamu volných neomezeně růst by znamenalo bezúčelné riskování obsazení velké části systémové paměti, která nebude nic dělat a možná bude potřeba jinde. Jakmile tedy velikost seznamu volných překročí limit (nebo když alokátor stránek začne žádat o pomoc s uvolňováním paměti), jsou objekty v seznamu volných vyprázdněny zpět do svých stránek. Jakákoliv částečná stránka, která je zcela zaplněna uvolněnými objekty, je poté vrácena alokátoru stránek k použití jinde.

    Objevuje se nicméně zajímavá situace: vzpomeňme, že SLQB je v podstatě alokátor pro jednotlivá CPU. Není zde ale nic, co by vyžadovalo, aby byly objekty uvolňovány na stejném CPU, které je alokovalo. A u dlouhožijících objektů na systému s mnoha procesory vskutku roste pravděpodobnost, že budou uvolňovány na jiném CPU. Proces neví nic o částečných stránkách, ze kterých byly tyto objekty alokovány, a tím pádem je nemůže uvolnit. Je tedy potřeba použít jiný přístup.

    Tento jiný přístup vyžaduje udržování dvou dalších seznamů objektů nazvaných rlist a remote_free. Když se alokátor pokouší vyprázdnit "vzdálený" objekt (objekt alokovaný na jiném CPU) ze svého lokálního seznamu volných, jednoduše tento objekt přesune do rlist. Alokátor příležitostně sáhne mezi CPU, aby si z jejich lokálního seznamu rlist vybral objekty a vložil je do sezamu remote_free na CPU, které tyto objekty původně alokovalo. CPU se potom může rozhodnout tyto objekty znovu použít, nebo je uvolnit do jejich stránek.

    Tato mezi-CPU operace zjevně vyžaduje zamykání, takže remote_free je chráněno spinlockem. Příliš častá práce se seznamy remote_free tudíž riskuje přeskakování řádku v cache a soupeření o zámek - ani jedno není vhodné, když je cílem škálovatelnost. To je důvod, proč procesory nejprve nasbírají skupinu objektů ve svých lokálních seznamech rlist předtím, než v jedné operaci přidají celý seznam do odpovídajícího seznamu remote_free. Krom toho alokátor příliš často nehledá objekty ve svém seznamu remote_list. Místo toho je objektům umožněno se hromadit do doby, než je překročen limit, v tu chvíli procesor, který přidal poslední objekt, nastaví příznak remote_free_check. Procesor vlastnící seznam remote_free pouze otestuje, jestli je tento příznak nastaven, důsledkem čehož je, že správa seznamu remote_free je prováděna s minimem soupeření o zámek nebo řádku v cache.

    Kód SLQB je relativně nový a pravděpodobně potřebuje významné množství práce předtím, než si bude moci hledat svou cestu do jádra. Nick tvrdí, že výsledky benchmarků jsou přibližně porovnatelné s těmi získanými při používání jiných alokátorů. "Přibližně porovnatelné" nicméně samo o sobě nebude dost na to, aby byl přidán ještě jeden alokátor paměti. Posunout SLQB od "porovnatelné" směrem k "zjevně lepší" je pravděpodobně dalším Nickovým úkolem.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    29.1.2009 00:45 Jiří J. | skóre: 34 | blog: Poutník | Brno
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008

    V poslední době si hodně hraji s netfilterem a někdy dnes (tedy včera) po obědě jsem narazil na
    printk("ipt_hook: happy cracking.\n");
    při náhodném grepování "checksum". To je ale náhoda.

    A hned jsem si říkal, že by to mohlo pěkně zahrtil logy :-D

    30.1.2009 23:37 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Som si vedomy znahy serveru o maximalne preklad aj zauzivanych anglickych nazvov (aj ked s tym nesuhlasim), ale ked na pochopenie vety je nutne ju najprv prelozit naspat do anglictiny, tak si myslim, ze sa to uz trocha prehana.

    provádět rozsyp/sesbírej I/O operace na konkrétním posunutí [offset] souboru
    If you hold a Unix shell up to your ear, you can you hear the C.
    31.1.2009 11:11 Michal Ludvig | skóre: 16
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008

    Haha, přesně tohle jsem si u dnešních JN a zejména u téhle věty taky říkal. Méně je někdy více a v případě termínů specifických pro kernel je, myslím, překlad dost k ničemu. Kdo neví co je scatter-gather tomu překlad na rozsyp-sesbírej vůbec nic neřekne a kdo ví v čem spočívá scatter-gather ten zase překlad nepotřebuje. A takových příkladů je víc. Lepší by bylo nechat scatter-gather a uvést odkaz na vysvětlení o co se jedná než si z prstu vycucnout nic neříkající překlad.

    Stejně tak offset by v tomhle kontextu měl být spíš "pozice" než "posunutí", ale od člověka čtoucího JN bych čekal že bude vědět co znamená "offset". Zas tak neobvyklý termín to není.

    Myslím že by nebylo od věci nechávat odborné termíny v angličtině a přeložit jen ten obecný text kolem. To by mimochodem mělo tu výhodu že by lidem za čas nemuselo dělat problém číst si o kernelu v angličtině - anglicky se naučí ve škole, technické termíny na abíčku a dohromady budou mít dost znalostí na pochopení kernel news v originále ;-)

    BTW Ještě mě dostala věta "Tito vývojáři bývají zdrojem, o který se hodně soupeří" - ale jakmile jsem si "zdroj" přeložil do angličtiny tak jsem pochopil vo co go.

    31.1.2009 13:08 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Ok, co se scatter-gather týče, tam jsem asi měl originální pojmy napsat do závorky za překlad; na druhou stranu bych řekl, že tenhle pojem už se objevuje tak dlouho, že si pravidelní čtenáři již konečně mohli zvyknout. Ale budiž, k lidem, kteří tohle čeli jako první JN v životě, bylo neuvedení původního termínu nefér.
    Myslím že by nebylo od věci nechávat odborné termíny v angličtině a přeložit jen ten obecný text kolem.
    Mnohokrát diskutováno, mnohokrát opakováno, takže to shrnu v krátkosti: ne.
    Ještě mě dostala věta "Tito vývojáři bývají zdrojem, o který se hodně soupeří" - ale jakmile jsem si "zdroj" přeložil do angličtiny tak jsem pochopil vo co go.
    Máš lepší překlad? Sem s ním.
    Quando omni flunkus moritati
    3.2.2009 06:37 Michal Ludvig | skóre: 16
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008

    Ale budiž, k lidem, kteří tohle čeli jako první JN v životě, bylo neuvedení původního termínu nefér.

    Přece vůbec nejde o to jestli tam byl nebo nebyl anglický termín. Jde o to že když někdo neví co je scatter/gather tak je mu přelklad na rozsyp/sesbírej platný asi tolik jako překlad na bugh/dugh. Kdo neví o co jde tomu překlad nepomůže a kdo ví o co jde toho to leda zmátne. Myslím že čtenářům by víc prospělo ponechání původního termínu s odkazem na vysvětlení místo nic neříkajícího překladu.

    3.2.2009 08:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Jde o to že když někdo neví co je scatter/gather tak je mu přelklad na rozsyp/sesbírej platný asi tolik jako překlad na bugh/dugh.
    Není. Pokud někdo neví, o jaká přesně operace se tím termínem v angličtině označuje, bude se řádit pouze obecným významem těch slov. A stejně se lze řídit i obecným významem těch slov v češtině (a nemusím to hledat ve slovníku). Pro toho, kdo ví, co přesně znamená ten anglický termín, pak může být originál uveden v závorce. A i z překladu rozsyp/sesbírej získám alespoň základní představu, o co se jedná -- určitě to odliším třeba od operace "vymaž" nebo "zapiš na disk".
    2.2.2009 10:16 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Myslím že by nebylo od věci nechávat odborné termíny v angličtině a přeložit jen ten obecný text kolem. To by mimochodem mělo tu výhodu že by lidem za čas nemuselo dělat problém číst si o kernelu v angličtině
    Hlavně by to mělo tu "výhodu", že by žádná česká terminologie nevznikla, takže by za chvíli nezbývalo, než na češtinu zapomenout a přejít zcela na angličtinu (a pokud by se tím pravidlem řídily i jiné obory, pak nejen v IT, ale všude). Pokud ale někdo dává přednost angličtině, nechápu, proč si ten článek nepřečte v originále.

    Samozřejmě něco jiného je uvádět u nových termínů anglický originál, překladatel nemusel vymyslet ten nejlepší překlad (nebo se už používá jiný překlad) a taky si to čtenář může rovnou s originálem spojit.

    Mimochodem -- pokud by se termíny nepřekládaly, vznikne ještě další problém, a to se skloňováním. Buď je budete skloňovat, pak už to ale nebudou moc originální termíny, nebo je ponecháte skutečně v originále, pak zase bude problém číst "českou" větu, kde je půlka slov cizích a neskloňovaných.
    2.2.2009 20:45 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Je tu 17 clankov, kde nebol problem so sklonovanim scatter/gather. (Vyraz "rozsyp/pozbirej operace" mi tiez nepride dvakrat sklonovany.)

    A 35 clankov s offset, z coho aspon polovica to pouziva v texte a nie iba v ukazkach kodu.

    A nespominam si na diskusiu, kde by sa ludia stazovali, ze nerozumeju anglickym terminom a vyzaduju preklad. (Aj ked moja pamat je dost pochybny zdroj.) Spominam si iba na vyzadovanie prekladov z dovodov ideovej cistoty. Naopak, sam som uz par krat mal problemy pochopit prelozeny text a ku spravnemu vyznamu som sa dopracoval prekladom do AJ a naspat.

    Velmi ocenujem tieto preklady, pretoze hoci mi AJ neposobi vyrazne problemy, asi by som sa nedonutil sledovat JN v povodnom zneni. V CJ citam vsetky. Len niekedy by menej bolo viac.
    If you hold a Unix shell up to your ear, you can you hear the C.
    2.2.2009 21:23 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Vyraz "rozsyp/pozbirej operace" mi tiez nepride dvakrat sklonovany.
    To bude asi tím, že nebyl v žádném pádě, ve kterém by bylo potřeba skloňovat...
    Quando omni flunkus moritati
    2.2.2009 21:38 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Chcel som tym napisat tolko, ze si neviem vymysliet vetu, kde by to bolo potrebne sklonovat. Vzdy to bude presne v tvare "rozsyp/pozbirej" a a sklonovat sa bude slovo operace. Takze prinajmensom sklonovaci dovod v prinajmensom tomto pripade IMO pada.
    If you hold a Unix shell up to your ear, you can you hear the C.
    3.2.2009 08:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Michal Ludvig ale argumentoval tím, že se nemají překládat žádné termíny. Což by třeba i v tomto případě znamenalo třeba nepřekládat celý termín "scatter/gather operation".
    3.2.2009 08:45 Michal Ludvig | skóre: 16
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008

    Ale no tak! (sem patří smajlík obracející oči v sloup)

    Někdy není od věci zapojit selský rozum. O tom že kernel = jádro se tu taky nikdo hádat nebude.

    3.2.2009 13:15 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    A kde je teda ta přesná hranice, kdy překlad ano a kdy už překlad ne?

    Ok, přeložit kernel jako jádro je fajn, přeložit scatter/gather jako rozsyp/sesbírej ne. Co dál? A nechci konkrétní příklady, kdy překládat a kdy nepřekládat. Rád bych slyšel nějaký přesný klíč, podle kterého je to možné určit.
    Quando omni flunkus moritati
    3.2.2009 18:56 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Nepřekládat tam, kde se cizí termín už stal součástí české slovní zásoby a běžně se používá. Není potřeba překládat tam, kde se stal součástí české slovní zásoby (jako třeba kernel), ale pokud existuje i česká alternativa, nevidím důvod, proč jí nedat přednost. V ostatních případech překládat, a pokud není z překladu zřejmé, o co jde, v závorkách ponechat originál.

    A pak už nezbývá než si opět „poslechnout“ v diskuzi, že české jaderné noviny mají přece samozřejmě být z poloviny anglické.
    3.2.2009 23:27 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Nepřekládat tam, kde se cizí termín už stal součástí české slovní zásoby a běžně se používá. Není potřeba překládat tam, kde se stal součástí české slovní zásoby (jako třeba kernel), ale pokud existuje i česká alternativa, nevidím důvod, proč jí nedat přednost. V ostatních případech překládat, a pokud není z překladu zřejmé, o co jde, v závorkách ponechat originál.
    Jinak řečeno dělat to, co se dělalo doteď. Já jsem pro.
    Quando omni flunkus moritati
    3.2.2009 23:34 Michal Ludvig | skóre: 16
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008

    Nepřekládat tam, kde se cizí termín už stal součástí české slovní zásoby a běžně se používá. Není potřeba překládat tam, kde se stal součástí české slovní zásoby (jako třeba kernel), ale pokud existuje i česká alternativa, nevidím důvod, proč jí nedat přednost.

    Přesně tak.

    V ostatních případech překládat, a pokud není z překladu zřejmé, o co jde, v závorkách ponechat originál.

    V ostatních případech nepřekládat, raději nechat originál a v závorce uvést vysvětlení nebo odkaz na vysvětlení. Ale na tomhle se asi neshodneme :-(

    3.2.2009 22:13 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Neprekladat nikde, okrem pripadov, ze ceska verzia je uz tak zauzivana, ze sa masovo uprednostnuje voci anglickej.

    Napriklad v texte pisat o rozsyp/pozbirej a odkazovat pritom na fukciu napr. s nazvom set_scatter_gather(int, int, void*) mi pride zbytocne matuce. (Ja viem, o S/C je tu uz zda sa dohoda, ze sa ponecha v AJ, ale nenapadol ma momentalne iny priklad.)
    If you hold a Unix shell up to your ear, you can you hear the C.
    3.2.2009 23:26 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Neprekladat nikde, okrem pripadov, ze ceska verzia je uz tak zauzivana, ze sa masovo uprednostnuje voci anglickej.
    http://lwn.net
    Ja viem, o S/C je tu uz zda sa dohoda, ze sa ponecha v AJ, ale nenapadol ma momentalne iny priklad.
    Takové dohody jsem si nevšiml. U S/C dál hodlám uvádět anglický výraz v hranatých závorkách za českým překladem
    Quando omni flunkus moritati
    4.2.2009 09:43 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Ponechávat termíny v angličtině a nesnažit se je překládat znamená, že poměr angličtiny a češtiny v textu se bude neustále posouvat ve prospěch angličtiny; tedy to znamená rezignovat na používání češtiny. Než se dlouho postupně trápit, to je pak jednodušší přejít na tu angličtinu hned. A tu možnost má každý – stačí si přečíst originál. Pro nás, kteří nechtějí na češtinu rezignovat, pak dál mohou vycházet české překlady :-)
    4.2.2009 13:24 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    1.) Nemyslim si, ze mnozstvo terminov rastie. Objavuju sa nove, ale vypadavaju stare.

    2.) Aby to postupne, ale nenasilne konvergovalo ku ceskym terminom tam mam vetu: "okrem pripadov, ze ceska verzia je uz tak zauzivana, ze sa masovo uprednostnuje voci anglickej"
    If you hold a Unix shell up to your ear, you can you hear the C.
    4.2.2009 15:58 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jaderné noviny - 17. 12. 2008
    Aby se český ekvivalent masově používal, musí se předtím používat méně masově, a úplně na začátku jej musí někdo použít poprvé. A to vy nechcete – takže pokud by se přistoupilo na vaši variantu, přestanou od této chvíle vznikat nové české termíny. Jak sám píšete, vypadávají staré termíny, takže by se postupně všechny termíny nahradily anglickými variantami. Pokud dokážete přesně určit, co je termín a co ne, tady by se to zastavilo. Jenže to nikdo přesně určit nedokáže, takže by se jistě brzy objevil někdo, kdo by tvrdil, že se nemá psát „scatter/gather operace“, protože je to celé termín, a má se tedy psát „scatter/gather operation“. Takže nahrazování českých slov anglickými by dále pokračovalo. A až by v „českých“ textech zbyly jen některé české spojky a předložky, asi by bylo zbytečné s „češtinou“ dál pokračovat.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.