{"id":2384,"date":"2016-08-04T11:21:34","date_gmt":"2016-08-04T15:21:34","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/fr\/?p=2384"},"modified":"2017-04-29T17:02:18","modified_gmt":"2017-04-29T21:02:18","slug":"accelerer-lacces-aleatoire-aux-disques","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/accelerer-lacces-aleatoire-aux-disques\/","title":{"rendered":"Acc\u00e9l\u00e9rer l&rsquo;acc\u00e8s al\u00e9atoire aux disques"},"content":{"rendered":"<p>Lorsqu&rsquo;on utilise un logiciel qui doit acc\u00e9der \u00e0 des donn\u00e9es sur disque de mani\u00e8re al\u00e9atoire, il est g\u00e9n\u00e9ralement reconnu que les disques SSD (<em>solid state drive<\/em>) offrent une meilleure performance; les disques SAS \u00e9tant moins efficaces et les disques SATA \u00e9tant les pires.  Toutefois, les disques SSD \u00e0 grande capacit\u00e9 de stockage \u00e9tant relativement dispendieux, lorsque l&rsquo;on traite de larges ensembles de donn\u00e9es, nous nous retrouvons souvent \u00e0 travailler sur les plus abordables et communs disques SATA.<\/p>\n<p>J&rsquo;ai r\u00e9cemment exp\u00e9riment\u00e9 avec le logiciel <a href=\"http:\/\/www.cbcb.umd.edu\/software\/jellyfish\">Jellyfish<\/a> afin d&rsquo;analyser les k-mers trouv\u00e9s dans une large cohorte d&rsquo;\u00e9chantillons leuc\u00e9miques s\u00e9quenc\u00e9s par RNA-Seq.  Pour cet ensemble de donn\u00e9es de 500 \u00e9chantillons, les tables de hachage de k-mers cr\u00e9\u00e9es par Jellyfish repr\u00e9sentaient 1.4 TB de donn\u00e9es.<\/p>\n<p>J&rsquo;ai ensuite utilis\u00e9 le programme <a href=\"https:\/\/bitbucket.org\/iric-soft\/km\">km<\/a> afin d&rsquo;identifier les mutations dans les \u00e9chantillons.  km exploite la sortie de Jellyfish.  Il identifie les mutations en reconstruisant tous les chemins de s\u00e9quences possibles qui commencent ou se terminent par un k-mer identique \u00e0 une petite s\u00e9quence de r\u00e9f\u00e9rence.  Lorsque nous avons des cas plut\u00f4t simples, km fait une requ\u00eate \u00e0 chacune des tables de hachage cr\u00e9\u00e9es par JellyFish et r\u00e9cup\u00e8re le nombre d&rsquo;occurences de milliers de k-mers (parmi plusieurs millions) pour chaque \u00e9chantillon RNA-Seq. \u00c9tant donn\u00e9 que ce sc\u00e9nario implique plusieurs acc\u00e8s al\u00e9atoire au disque, nous obtenons les temps d&rsquo;ex\u00e9cution suivant lorsque les tables de hachage sont sur un disque SATA (en RAID1) : <\/p>\n<p> <small><\/p>\n<pre><code class=\"sh\">\r\ntime .\/find_mutation -c 2 -p 0.02 query.fa \/scratch\/kmers.jf\r\n\r\nreal 1m22.442s\r\nuser 0m1.422s\r\nsys  0m1.098s\r\n<\/code>\r\n<\/pre>\n<p><\/small><br \/>\nNous pouvons am\u00e9liorer dramatiquement ce temps d&rsquo;ex\u00e9cution en prenant avantage de l&rsquo;une des forces des disques SATA, c&rsquo;est-\u00e0-dire son d\u00e9bit s\u00e9quentiel.  Ce qui suit semble<em> a priori<\/em> \u00eatre une mauvaise id\u00e9e, mais si nous copions d&rsquo;abord la table de hachage enti\u00e8re en m\u00e9moire (sur un <em>RAM disk<\/em>) et que nous ex\u00e9cutons ensuite nos requ\u00eates, nous obtenons : <\/p>\n<p><small><\/p>\n<pre><code class=\"sh\">\r\ntime (cp \/scratch\/kmers-2.1.3_21.jf \/dev\/shm\/ \\\r\n      &amp;&amp; .\/find_mutation -c 2 -p 0.02 test.fa \/dev\/shm\/kmers-2.1.3_21.jf)\r\n\r\nreal 0m21.879s\r\nuser 0m0.916s\r\nsys  0m4.005s\r\n<\/code>\r\n<\/pre>\n<p><\/small><\/p>\n<p>Il faut garder en t\u00eate qu&rsquo;ici nous copions s\u00e9quentiellement environ 3 GB de donn\u00e9es en RAM, en plus de faire des requ\u00eates pour connaitre le nombre d&rsquo;occurences de k-mers donn\u00e9es (quelques KB).  Le processus complet est <strong>5 fois plus rapide<\/strong>. En regardant de plus pr\u00e8s, nous pouvons voir que l&rsquo;op\u00e9ration de copie prend environ 18 secondes et que rouler km prend 3 secondes.<\/p>\n<h3>Test \u00e0 plus grande \u00e9chelle<\/h3>\n<p>Nos amis d&rsquo;IBM nous ont r\u00e9cemment pr\u00eat\u00e9 un <a href=\"http:\/\/www-03.ibm.com\/systems\/storage\/flash\/\">FlashSystem 820<\/a> pour \u00e9valuer sa performance et nous avons saisi l&rsquo;opportunit\u00e9 de rouler quelques tests.  Notre unit\u00e9 de d\u00e9monstration venait avec une connection fibre 8Gbs et contenait 12 disques Flash de 1TB. Ceci constitue le summum en terme de latence (<em>microseconds latency<\/em>). Voici les r\u00e9sultats pour une recherche de mutations dans 5 g\u00e8nes chez 147 \u00e9chantillons (\u00e9quivalent \u00e0 465GB de donn\u00e9es).<\/p>\n<table class=\"table\" style=\"height: 86px; border-color: #000000;\" width=\"513\">\n<tbody>\n<tr>\n<td>Syst\u00e8me<\/td>\n<td>Disque RAM<\/td>\n<td>Temps (sec)<\/td>\n<td>Prix estim\u00e9 total*<\/td>\n<\/tr>\n<tr>\n<td>Xeon E5-2630 avec stockage SATA (IBM V3700)<\/td>\n<td>Non<\/td>\n<td>22 858<\/td>\n<td>64 000$<\/td>\n<\/tr>\n<tr>\n<td>Xeon E5-2630 avec stockage flash (IBM FlashSystem 820)<\/td>\n<td>Non<\/td>\n<td>2 182<\/td>\n<td>400 000$<\/td>\n<\/tr>\n<tr>\n<td>Ma station de travail (i7-3770 avec RAID 1 SATA + RAMdisk)<\/td>\n<td>Oui<\/td>\n<td>4 515<\/td>\n<td>3 000$<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><small>*Prix estim\u00e9 pour le serveur et le stockage excluant les commutateurs SAN.<\/small><\/p>\n<p>Le FlashSystem produit un r\u00e9sultat impressionnant et constitue une pi\u00e8ce d&rsquo;\u00e9quipement remarquable.  Cependant, en prenant avantage de la force des disques SATA et de la vitesse d&rsquo;acc\u00e8s de la m\u00e9moire vive, nous obtenons des r\u00e9sultats plut\u00f4t int\u00e9ressants et cette solution s&rsquo;av\u00e8re 100 fois moins co\u00fbteuse.  Et l&rsquo;un des avantages les plus notables de cette strat\u00e9gie : elle \u00e9limine presque tout le bruit de grattage produit par le disque de ma station de travail! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsqu&rsquo;on utilise un logiciel qui doit acc\u00e9der \u00e0 des donn\u00e9es sur disque de mani\u00e8re al\u00e9atoire, il est g\u00e9n\u00e9ralement reconnu que les disques SSD (solid state drive) offrent une meilleure performance; les disques SAS \u00e9tant moins efficaces et les disques SATA \u00e9tant les pires. Toutefois, les disques SSD \u00e0 grande capacit\u00e9 de stockage \u00e9tant relativement dispendieux, lorsque l&rsquo;on traite de larges ensembles de donn\u00e9es, nous nous retrouvons souvent \u00e0 travailler sur les plus abordables et communs disques SATA. J&rsquo;ai r\u00e9cemment exp\u00e9riment\u00e9 <a href=\"https:\/\/bioinfo.iric.ca\/fr\/accelerer-lacces-aleatoire-aux-disques\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[88,32],"tags":[],"class_list":["post-2384","post","type-post","status-publish","format-standard","hentry","category-informatique","category-performance-fr-2"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=2384"}],"version-history":[{"count":8,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2384\/revisions"}],"predecessor-version":[{"id":2395,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2384\/revisions\/2395"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=2384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=2384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=2384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}