{"id":776,"date":"2011-05-19T15:07:48","date_gmt":"2011-05-19T14:07:48","guid":{"rendered":"http:\/\/www.blaess.fr\/christophe\/?p=776"},"modified":"2011-05-19T15:07:48","modified_gmt":"2011-05-19T14:07:48","slug":"actu-bye-bye-big-kernel-lock","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2011\/05\/19\/actu-bye-bye-big-kernel-lock\/","title":{"rendered":"[Actu] Bye-Bye Big Kernel Lock&#8230;"},"content":{"rendered":"<p style=\"text-align: justify;\">Linus Torvalds a publi\u00e9 ce matin la version <a title=\"Linux 2.6.39\" href=\"http:\/\/www.kernel.org\/pub\/linux\/kernel\/v2.6\/linux-2.6.39.tar.bZ2\">2.6.39 du kernel Linux<\/a>. Pour des raisons li\u00e9es essentiellement \u00e0 son emploi du temps charg\u00e9, il a pr\u00e9f\u00e9r\u00e9 renoncer \u00e0 la version <em>release candidate<\/em> rc8 et passer directement \u00e0 la version stable.<\/p>\n<p style=\"text-align: justify;\">Pas beaucoup de grosses nouveaut\u00e9s dans cette version, je note la pr\u00e9sence d&rsquo;une nouvelle interface nomm\u00e9e \u00ab\u00a0<em>Media Controller API<\/em>\u00a0\u00bb principalement destin\u00e9e \u00e0 l&rsquo;acquisition vid\u00e9o et aux cameras (Menus \u00ab\u00a0<em>Drivers<\/em>\u00ab\u00a0, sous-menu \u00ab\u00a0<em>Multimedia Support<\/em>\u00ab\u00a0), et quelques autres nouvelles options dans la configuration du noyau.<\/p>\n<h3>Une disparition remarquable&nbsp;: le <em>Big Kernel Lock<\/em> est (enfin) d\u00e9finitivement mort&nbsp;!<\/h3>\n<p>\n<!--more-->\n<\/p>\n<p style=\"text-align: justify;\">Rappelons que ce verrou, pr\u00e9sent depuis les premi\u00e8res versions multiprocesseurs de Linux avait pour objectif de prot\u00e9ger certaines parties du noyau contre des ex\u00e9cutions parall\u00e8les (en configuration SMP) et les pr\u00e9emptions (en mode PREEMPT). Ce verrou n&rsquo;\u00e9tait plus utilis\u00e9 que dans quelques rares portions du kernel, et de nombreux d\u00e9veloppeurs cherchaient \u00e0 s&rsquo;en d\u00e9barrasser depuis plusieurs ann\u00e9es. Pour am\u00e9liorer la granularit\u00e9 des verrouillages exclusifs, plusieurs m\u00e9canismes de synchronisation sont disponibles (spinlock, mutex, rcu, etc.).<\/p>\n<p style=\"text-align: justify;\">Le noyau 2.6.39 marque enfin la disparition d\u00e9finitive du BKL. V\u00e9rifions-le en comparant les r\u00e9sultats de recherche de la chaine \u00ab\u00a0<code>kernel_lock()<\/code>\u00a0\u00bb sur les deux derni\u00e8res versions stables&nbsp;:<\/p>\n<pre>[src ]# <strong>cd linux-2.6.38\/<\/strong>\n[linux-2.6.38]# <strong>find . -name '*.[c\u0127]' | xargs grep -E 'lock_kernel()'<\/strong>\n.\/fs\/hpfs\/dir.c:\tlock_kernel();\n.\/fs\/hpfs\/dir.c:\tunlock_kernel();\n.\/fs\/hpfs\/dir.c:\tlock_kernel();\n[...]\n.\/drivers\/staging\/go7007\/s2250-loader.c:\tunlock_kernel();\n.\/drivers\/staging\/usbip\/usbip_common.c:\tlock_kernel();\n.\/drivers\/staging\/usbip\/usbip_common.c:\tunlock_kernel();\n[root@tr-a-0 linux-2.6.38]# <strong>find . -name '*.[c\u0127]' | xargs grep -E 'lock_kernel()' | wc -l<\/strong>\n298\n[root@tr-a-0 linux-2.6.38]# <strong>cd ..<\/strong>\n[root@tr-a-0 src]#<strong> wget <a title=\"http:\/\/www.kernel.org\/pub\/linux\/kernel\/v2.6\/linux-2.6.39.tar.bz2\" href=\"http:\/\/www.kernel.org\/pub\/linux\/kernel\/v2.6\/linux-2.6.39.tar.bz2\">http:\/\/www.kernel.org\/pub\/linux\/kernel\/v2.6\/linux-2.6.39.tar.bz2<\/a><\/strong>\n--2011-05-19 15:19:56--  http:\/\/www.kernel.org\/pub\/linux\/kernel\/v2.6\/linux-2.6.39.tar.bz2\n[...]\n2011-05-19 15:21:11 (1000 KB\/s) - \u201clinux-2.6.39.tar.bz2\u201d saved [76096559\/76096559]\n[root@tr-a-0 src]# <strong>tar -xjf linux-2.6.39.tar.bz2 <\/strong>\n[root@tr-a-0 src]# <strong>cd linux-2.6.39<\/strong>\n[root@tr-a-0 linux-2.6.39]# <strong>find . -name '*.[c\u0127]' | xargs grep -E 'lock_kernel()'<\/strong>\n[root@tr-a-0 linux-2.6.39]# <strong>find . -name '*.[c\u0127]' | xargs grep -E 'lock_kernel()' | wc -l<\/strong>\n0\n[root@tr-a-0 linux-2.6.39]#<\/pre>\n<p style=\"text-align: justify;\">Bon d\u00e9barras&nbsp;!<\/p>\n<p style=\"text-align: justify;\">Je testerai les nouvelles fonctionnalit\u00e9s (par exemple <code>ipset<\/code> qui permet d&rsquo;appliquer des r\u00e8gles de filtrage sur des ensembles d&rsquo;adresses IP) dans les jours \u00e0 venir, mais pour le moment ce nouveau kernel fonctionne tr\u00e8s bien&nbsp;:<\/p>\n<pre>[~]# <strong>uname -a<\/strong>\nLinux tr-a <strong>2.6.39-cpb<\/strong> #1 SMP Thu May 19 12:46:48 CEST 2011 i686 i686 i386 GNU\/Linux\n[root@tr-a-0 ~]#<\/pre>","protected":false},"excerpt":{"rendered":"<p>Linus Torvalds a publi&eacute; ce matin la version 2.6.39 du kernel Linux. Pour des raisons li&eacute;es essentiellement &agrave; son emploi du temps charg&eacute;, il a pr&eacute;f&eacute;r&eacute; renoncer &agrave; la version release candidate rc8 et passer directement &agrave; la version stable. Pas beaucoup de grosses nouveaut&eacute;s dans cette version, je note la pr&eacute;sence d&rsquo;une nouvelle interface [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,8],"tags":[],"class_list":["post-776","post","type-post","status-publish","format-standard","hentry","category-actualite","category-linux-2"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=776"}],"version-history":[{"count":0,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/776\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}