Portál AbcLinuxu, 23. května 2024 17:49

Jaderné noviny - 18. 2. 2015: Začleňovací okno 3.20 2. část.

17. 6. 2015 | Redakce
Články - Jaderné noviny - 18. 2. 2015: Začleňovací okno 3.20 2. část.  

Stav vydání jádra. Citáty týdne. Začleňovací okno 3.20 2. část.

Stav vydání jádra

Začleňovací okno 3.20/4.0 zůstává i nadále otevřeno, takže není nový vývojový kernel. Příliv patchů do hlavního repozitáře pokračuje. Pro více informací viz. články níže.

Minulý týden nebyly žádné stabilní aktualizace.

Citáty týdne

Připomíná to styl kódování robotů. Jako nějaká opuštěná chodba, kterou neúnavně čistí zapomenutý vysavač Roomba, kam ale lidská noha nevkročila už roky.

-Alan Cox


SMP (symetrický multiprocesing) má vždy na svědomí několik zkažených vajec v RT omeletě.

-Steven Rostedt

Začlenovací okno 3.20 2. část

V době psaní tohoto článku bylo do hlavního repozitáře v tomto vývojovém cyklu začleněno již 7849 neslučitelných sad změn; z toho 4200 od doby, kdy bylo napsáno shrnutí z minulého týdne. Některé ze zajímavějších a viditelnějších změn z oněch 4200 pachtů zahrnují:

Mezi změny viditelné pro vývojáře jádra patří:

Prozatím to vypadá na relativně pomalý cyklus, jak bylo předpovězeno před otevřením začleňovacího (merge) okna. Přesto by měl být důraz kladen na slovo "relativně"; téměř 8000 patchů není zrovna málo.

Tato verze kernelu ještě nemá své jméno. Linus na svém Google+ spustil hlasování, ve kterém zvítězilo označení 4.0, ale on sám se ještě nevyjádřil. Příští týden nás čekají poslední změny tohoto cyklu, a snad také odpověď na otázku, ohledně jeho pojmenování.

Epoll se vyvíjí

Epoll je sada specifických Linuxových volání určených k zajištění rychlého pollování (polling) velkého počtu souborových deskriptorů (popisovačů). API se používá od doby, co bylo včleněno ve vývojové verzi 2.5, ale jako u spousty jiných rozhraní, i tady je prostor pro zlepšení. V současné době kolují dvě sady patchů, které by této sadě systémových volání přidaly funkce.

Přehled

Epoll je navržen tak, aby fungoval podobně jako select() nebo poll(), ale s více možnostmi a vyšším výkonem v situaci, kdy je využito více souborových deskriptorů. Každé volání select() nebo poll() může obsahovat zcela novou sadu souborových deskriptorů, takže kernel musí každý z nich ověřit, kontrolovat připravenost I/O a přidávat pollovací proces (polling process) příslušným frontám. Seznam souborových deskriptorů se mezi voláními příliš nemění, takže dochází ke zbytečnému duplicitnímu úsilí. Volání epoll tento problém řeší tím, že oddělí nastavení (setup) od čekání souborového deskriptoru, než dojde k jeho připravení.

Proces, který využívá toto API musí začít vytvořením speciálního souborového deskriptoru pro použití v pollování, což se dělá voláním k jednomu z:

	#include 

	int epoll_create(int size);
	int epoll_create1(int flags);

Každé z těchto volání vrátí souborový deskriptor, který bude využit se zbývajícími funkcemi epoll. Velikost size parametru epoll_Create() se již nepoužije. Argument vlajky flags je přidán do epoll_create1() a lze jej použít k nastavení příznaku vlajky close-on-exec pro výsledný souborový deskriptor.

Dalším krokem je přidání všech souborových deskriptorů, které mají být monitorovány:

	int epoll_ctl(int efd, int op, int fd, struct epoll_event *event);

Jestliže je op EPOLL_CTL_ADD, bude výsledný fd přidán do sady. Parametr události se používá k popisu událostí, které budou pollovány; pro podrobnosti viz. manuál. op epoll_ctl() se používá také k odstranění souborových deskriptorů nebo úpravě pollování.

Čekání k připravení jednoho ze souborových deskriptorů k připravení se provádí:

	int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
    	int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout,
                    	const sigset_t *sigmask);

Události, které vrátí epoll_wait() až k maxevents budou uloženy v poli akcí events array. Parametr timeout je v milisekundách. Verze epoll_pwait() také umožňuje v průběhu volání zablokovat (nebo odblokovat) specifikaci ze souboru signálů. Pro více informací viz. manuál.

epoll_ctl_batch() and epoll_pwait1(

Tento patch Fama Zhenga přináší dvě nová systémová volání rodině epoll. První řeší problém s výkonem, který nastává v situaci, kdy je nutné dělat změny v souborových deskriptorech v sadě epoll. Volání epoll_ctl() může pouze přidat, modifikovat nebo vymazat jeden souborový desktriptor. Je-li zapotřebí provést změny ve více deskriptorech, je třeba více volání epoll_ctl(). Nabízené systémové volání epollctl_batch() tento problém obchází zpracováním více souborových deskriptorů v jednom volání:

	int epoll_ctl_batch(int epfd, int flags, int ncmds, struct epoll_ctl_cmd *cmds);

Struktura cmds zde v podstatě duplikuje všechny argumenty, které by byly předány volání epoll_ctl(). Předáním sady těchto struktur může program provádět operace na několika souborových deskriptorech v jednom systémovém volání.

Fam také přidává nové systémové volání k provedení pollování:

	struct epoll_wait_params {
		int clockid;
		struct timespec timeout;
		sigset_t *sigmask;
		size_t sigsetsize;
    	};

    	int epoll_pwait1(int epfd, int flags,
                     	struct epoll_event *events, int maxevents,
                     	struct epoll_wait_params *params);

Tato verze epoll_wait() přidává nový parametr vlajek, ale nedefinuje jejich hodnoty, čili vlajky musí být nula. Úkolem parametrů zamíchaných do struktury je dát žádosti (aplication) více kontroly nad zpracováním časového limitu. Časový limit v hodnotách milisekund epoll_wait() se ukázal jako příliš hrubý pro řadu použití. Nové systémové volání definuje timeout v nanosekundách, což problém řeší.

Odkazy a zdroje

LWN.net

Další články z této rubriky

Jaderné noviny – přehled za duben 2024
Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023

Diskuse k tomuto článku

Ruža Becelin avatar 17.6.2015 14:09 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: Jaderné noviny - 18. 2. 2015: Začleňovací okno 3.20 2. část.
Odpovědět | Sbalit | Link | Blokovat | Admin
Architektura PA-RISC již není schopna spustit bitové HP-UX binárky.

The PA-RISC architecture is no longer able to run 32-bit HP-UX binaries.

Vypadlo vam "32-"

rADOn avatar 17.6.2015 18:43 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 18. 2. 2015: Začleňovací okno 3.20 2. část.
Odpovědět | Sbalit | Link | Blokovat | Admin
The nonvolatile memory support patches…
Nonvolativní patche podpory paměti…
no comment.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
17.6.2015 21:22 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny - 18. 2. 2015: Začleňovací okno 3.20 2. část.
Odpovědět | Sbalit | Link | Blokovat | Admin
poštovní jednotky Altera
OMG :-D. Předpokládám, že to má být synchronizační hardware "mailbox" (něco jako buffer se semaforem).
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
Jendа avatar 18.6.2015 08:08 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jaderné noviny - 18. 2. 2015: Začleňovací okno 3.20 2. část.
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč se ty I2C a SPI volovinky přidávají jako jaderné moduly? Tohle by se podle mě mělo obsluhovat z userspace.

Btw. překlad je dneska mimořádně špatný :-(
Bezpečnostní modul Smack může nyní (filtrovat pakety netfilteru skrze bezpečnostní štítky) komunikovat se systémem netfilter skrze bezpečnostní štítky k filtrování paketů.

Souborový systém ubifs má nyní multiqueue podporu blokových vrstev (zvyšujících jeho výkonnost) a podporu bezpečnosti.* rozšířených atributů (umožňující podporu bezpečenostních modulů).

Pro změny v ovladači Intel v tomto vývojovém cyklu viz. tento zápis.

6 osé akcelerometry
Já to s tou denacifikací Slovenska myslel vážně.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.