{"id":2101,"date":"2011-04-26T18:23:47","date_gmt":"2011-04-26T17:23:47","guid":{"rendered":"http:\/\/blog.capdata.fr\/?p=2101"},"modified":"2019-09-13T14:45:49","modified_gmt":"2019-09-13T13:45:49","slug":"bench-avec-netapp-datacore-esx","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/","title":{"rendered":"Bench avec NetApp \/ Datacore \/ ESX"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F2101&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F2101&#038;title=Bench%20avec%20NetApp%20%2F%20Datacore%20%2F%20ESX\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Bench%20avec%20NetApp%20%2F%20Datacore%20%2F%20ESX&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F2101\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>J&#8217;ai r\u00e9cemment eu l&#8217;occasion de pouvoir effectuer un bench IO sur une plateforme SQL Server sous ESX avec un couple Datacore \/ NetApp au niveau du stockage.<\/p>\n<h2>Contexte technique:<\/h2>\n<h3>DataCore SANMelody \/ NetApp:<\/h3>\n<p>Le but de la man\u0153uvre est de d\u00e9terminer le d\u00e9bit maximum que sera capable de tirer le\u00a0 sous syst\u00e8me IO cible. L&#8217;architecture est la suivante:<\/p>\n<p>2 salles techniques compos\u00e9es chacune de (<br \/>\n&#8211;<em> 1 Contr\u00f4leur NetApp FAS 3210<br \/>\n&#8211; 1 tiroir T1 de 14 x 450 Gb SAS 15KRPM en RAIDDP. (11 disques data, 2 disques DP, 1 disque de spare).<br \/>\n&#8211; 1 tiroir T2 de 14 x 600 Gb SAS 15KRPM en RAIDDP. (11 disques data, 2 disques DP, 1 disque de spare).<br \/>\n&#8211; 1 tiroir T3 de 14 x 600 Gb SAS 15KRPM en RAIDDP. (11 disques data, 2 disques DP, 1 disque de spare).<br \/>\n&#8211; 1 contr\u00f4leur DataCore SANMelody 3.0.3.5, 16Gb cache.<br \/>\n&#8211; 1 volume Tiers1 pris sur le tiroir T1 raccord\u00e9 directement \u00e0 DataCore.<\/em><br \/>\n)<\/p>\n<p>Soit:<\/p>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2147\" title=\"Datacore\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1.jpg\" alt=\"\" width=\"688\" height=\"510\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1.jpg 999w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1-300x222.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1-768x570.jpg 768w\" sizes=\"auto, (max-width: 688px) 100vw, 688px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.datacore.com\/Software\/Products\/Product-Archive\/SANmelody-Software.aspx\">SANMelody <\/a>est un logiciel tournant sur Windows Server et qui \u00e9mule un SAN en quelque sorte.\u00a0 Il s&#8217;intercale entre le SAN et le host, et pr\u00e9sente aux machines clientes (en l&#8217;occurence ici les 2 ESX) des disques comme s&#8217;il s&#8217;agissait directement du SAN. Il est \u00e0 la fois initiateur c\u00f4t\u00e9 baie, et target c\u00f4t\u00e9 host. Deux avantages principaux:<br \/>\n&#8211; Il r\u00e9serve une grande partie de la m\u00e9moire de la machine Windows pour bufferiser les IOs en provenance des hosts. Il ajoute un niveau de cache suppl\u00e9mentaire ici de 16Gb par contr\u00f4leur ce qui n&#8217;est pas rien.<br \/>\n&#8211; Ensuite, il permet de r\u00e9pliquer les blocs vers un second contr\u00f4leur de mani\u00e8re synchrone pour assurer une redondance des donn\u00e9es.<\/p>\n<p>Il est clair que le cache utilis\u00e9 par SANMelody n&#8217;est pas <a href=\"http:\/\/en.wikipedia.org\/wiki\/Algorithms_for_Recovery_and_Isolation_Exploiting_Semantics\">WAL compliant<\/a> dans la mesure o\u00f9 celui-ci r\u00e9serve ses buffers \u00e0 partir de la m\u00e9moire pr\u00e9sent\u00e9e par windows. Par contre, dans la mesure o\u00f9 le contr\u00f4leur est r\u00e9pliqu\u00e9 en synchrone sur une autre salle, chacune \u00e9tant aliment\u00e9e de mani\u00e8re autonome, on limite les risques. Il faudrait que les deux salles tombent en m\u00eame temps pour exposer des donn\u00e9es \u00e0 la corruption. D&#8217;ailleurs une option &#8216;<em>Force Cache Write Through<\/em>&#8216; existe au niveau de SANMelody, qui permet comme son nom l&#8217;indique de forcer les \u00e9critures sur le m\u00e9dia (donc le contr\u00f4leur NetApp). Donc bon, dans l&#8217;absolu, avec une bonne strat\u00e9gie de backup derri\u00e8re, pourquoi pas&#8230;<\/p>\n<p>Dans tous les cas, nous allons tester avec et sans cette option.<\/p>\n<h3>Les ESX:<\/h3>\n<p>Du c\u00f4t\u00e9 de la VM, on ne peut pas vraiment faire mieux: les procs sont des <a href=\"http:\/\/ark.intel.com\/Product.aspx?id=46499\">core i7 Xeon 7560<\/a>, 64 bits, VT compatibles. D&#8217;apr\u00e8s la matrice de VMM [1], un guest en 64 bits sur une telle plateforme profitera des avantages suivants:<\/p>\n<p>&#8211; Il s&#8217;ex\u00e9cute en ring 0, donc on est en CPU-direct (pas de translation binaire).<br \/>\n&#8211; L&#8217;hyperviseur utilisera la technologie <a href=\"http:\/\/www.intel.com\/technology\/itj\/2006\/v10i3\/1-hardware\/8-virtualization-future.htm\">EPT <\/a>du core i7 pour d\u00e9charger la gestion des page tables et de la m\u00e9moire par guest.<\/p>\n<p>On n&#8217;utilisera pas VMFS mais directement du soft RDM, donc pas d&#8217;histoire d&#8217;alignement [2]. Et de toutes fa\u00e7ons, dans la mesure o\u00f9 ESX est amen\u00e9 \u00e0 dispara\u00eetre au profit d&#8217;ESXi, on pourra difficilement v\u00e9rifier cela \u00e0 l&#8217;avenir puisqu&#8217;on n&#8217;aura plus de service console.<\/p>\n<p>Le guest OS quant \u00e0 lui sera un Windows 2008R2 64 bits avec 4vCPU, 4Gb de m\u00e9moire dans un premier temps, et SQL Server 2005 x64 Enterprise Edition.<\/p>\n<p>Les deux ESX forment un cluster HA DRS. Nous avons test\u00e9 de lancer une alimentation (1 million de singleton inserts) pendant une bascule vMotion pour valider la partie secours et on n&#8217;a observ\u00e9 qu&#8217;un overhead de 7% seulement.<\/p>\n<h3>SQLIO:<\/h3>\n<p>Pour tester le sous syst\u00e8me IO complet, nous nous appuierons sur <a href=\"http:\/\/www.google.com\/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBwQFjAA&amp;url=http%3A%2F%2Fwww.microsoft.com%2Fdownloads%2Fdetails.aspx%3Ffamilyid%3D9a8b005b-84e4-4f24-8d65-cb53442d9e19&amp;rct=j&amp;q=SQLIO&amp;ei=MXWGTa_THMXx4gbW463xCA&amp;usg=AFQjCNG457croR4yz8ueC0pGOkn5lZTK5Q&amp;sig2=8pRGh0eocw2nVSfnwzmJqw&amp;cad=rja\">SQLIO. <\/a>Quelques rappels sur les param\u00e8tres de base:<\/p>\n<pre><span style=\"color: #008000;\">Usage: sqlio [options] [&lt;filename&gt;...]\r\n [options] may include any of the following:\r\n<span style=\"color: #ff0000;\"> -k&lt;R|W&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 kind of IO (R=reads, W=writes)<\/span>\r\n -t&lt;threads&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number of threads\r\n<span style=\"color: #ff0000;\"> -s&lt;secs&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number of seconds to run<\/span>\r\n -d&lt;drv_A&gt;&lt;drv_B&gt;..\u00a0\u00a0\u00a0\u00a0\u00a0 use same filename on each drive letter given\r\n -R&lt;drv_A\/0&gt;,&lt;drv_B\/1&gt;.. raw drive letters\/number for I\/O\r\n<span style=\"color: #ff0000;\"> -f&lt;stripe factor&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 stripe size in blocks, random, or sequential<\/span>\r\n -p[I]&lt;cpu affinity&gt;\u00a0\u00a0\u00a0\u00a0 cpu number for affinity (0 based)(I=ideal)\r\n -a[R[I]]&lt;cpu mask&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 cpu mask for (R=roundrobin (I=ideal)) affinity\r\n<span style=\"color: #ff0000;\"> -o&lt;#outstanding&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 depth to use for completion routines<\/span>\r\n<span style=\"color: #ff0000;\"> -b&lt;io size(KB)&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IO block size in KB<\/span>\r\n -i&lt;#IOs\/run&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number of IOs per IO run\r\n -m&lt;[C|S]&gt;&lt;#sub-blks&gt;\u00a0\u00a0\u00a0 do multi blk IO (C=copy, S=scatter\/gather)\r\n<span style=\"color: #ff0000;\"> -L&lt;[S|P][i|]&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 latencies from (S=system, P=processor) timer<\/span>\r\n<span style=\"color: #ff0000;\"> -B&lt;[N|Y|H|S]&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 set buffering (N=none, Y=all, H=hdwr, S=sfwr)<\/span>\r\n -S&lt;#blocks&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 start I\/Os #blocks into file\r\n -v1.1.1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 I\/Os runs use same blocks, as in version 1.1.1\r\n<span style=\"color: #ff0000;\"> -F&lt;paramfile&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 read parameters from &lt;paramfile&gt;<\/span>\r\nDefaults:\r\n -kR -t1 -s30 -f64 -b2 -i64 -BN testfile.dat\r\nMaximums:\r\n -t (threads):\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 256\r\n no. of files, includes -d &amp; -R: 256\r\n filename length:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 256\r\n<\/span><\/pre>\n<p>Nous nous contenterons d&#8217;utiliser les param\u00e8tres suivants:<\/p>\n<p><strong>-k: <\/strong>type d&#8217;acc\u00e8s (lectures \/ \u00e9critures)<br \/>\n<strong>&#8211; s: <\/strong>dur\u00e9e du test en secondes.<br \/>\n<strong>&#8211; f: <\/strong>sequential \/ random.<br \/>\n<strong>&#8211; o: <\/strong>nombre d&#8217;outstandings IOs, le nombre d&#8217;I\/Os en attente par thread. Dans la mesure o\u00f9 chaque worker et le Lazy Writer postent la grande majorit\u00e9 des IOs en asynchrone, il y a des chances qu&#8217;il y ait plus d&#8217;une IO asynchrone par thread \u00e0 un instant donn\u00e9. Nous choisirons de tester 64, 128 et 256 outstanding IOs par thread.<br \/>\n<strong>&#8211; b:<\/strong> taille de l&#8217;IO. Nous utiliserons toutes les tailles multiple de la page de 8K jusqu&#8217;\u00e0 256K, en acc\u00e8s s\u00e9quentiel, et seulement 8k en al\u00e9atoire.<br \/>\n<strong>&#8211; L:<\/strong> indique que nous souhaitons r\u00e9cup\u00e9rer les valeurs de latence remont\u00e9es par le syst\u00e8me.<br \/>\n<strong>&#8211; B:<\/strong> indique que nous ne souhaitons pas utiliser le cache NTFS (les fichiers de donn\u00e9es et journaux sont ouverts en FILE_FLAG_WRITE_THROUGH | FILE_FLAG_NO_BUFFERING)<br \/>\n<strong>&#8211; F: <\/strong>nous allons passer \u00e0 sqlio un fichier de param\u00e8tres dans lequel nous indiquerons le nombre de threads et la taille et la localisation du fichier de test.<\/p>\n<h2>Diff\u00e9rentes batteries de tests:<\/h2>\n<p>Nous allons tester trois configuration possibles:<\/p>\n<p>BANC1: NetApp -&gt; Datacore sans Force Cache Write Through -&gt; ESX -&gt; Guest OS<br \/>\nBANC2:- NetApp -&gt; Datacore avec Force Cache Write Through -&gt; ESX -&gt; Guest OS<br \/>\nBANC3:\u00a0 NetApp -&gt; ESX -&gt; Guest OS<\/p>\n<p>Le BANC1 sera l&#8217;utilisation nominale de la plateforme. Le BANC2 devra montrer le prix \u00e0 payer pour \u00eatre 100% WAL-compliant. Dans la derni\u00e8re configuration, on souhaite mesurer ce qu&#8217;on perd potentiellement si on retire Datacore\u00a0 de l&#8217;\u00e9quation.<\/p>\n<h2>Pr\u00e9paration des scripts:<\/h2>\n<p>Il a fallu se constituer un petit package de recueil\u00a0 et d&#8217;agr\u00e9gation d&#8217;informations pour le bench. On a choisi de le pr\u00e9parer en fonction des IOs types envoy\u00e9es par SQL Server:<\/p>\n<ul>\n<li>Lectures s\u00e9quentielles de 8,32,64,128 et 256 K (read-ahead, ramp up prefetch, DBCC CHECKDB&#8230;)<\/li>\n<li>\u00c9critures s\u00e9quentielles de 8,32,64,128 et 256 K (Backup \/ restore, Alter index Rebuild, Bulk insert&#8230;)<\/li>\n<li>Lectures al\u00e9atoires de 8K: lectures types OLTP.<\/li>\n<li>\u00c9critures al\u00e9atoires de 8K: \u00e9critures types OLTP.<\/li>\n<\/ul>\n<p>Voici le contenu du fichier .bat utilis\u00e9:<\/p>\n<pre><span style=\"color: #008000;\">sqlio -kR -s120 -o64 -fsequential -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o64 -fsequential -b32 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o64 -fsequential -b64 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o64 -fsequential -b128 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o64 -fsequential -b256 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o64 -frandom -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o64 -fsequential -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o64 -fsequential -b32 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o64 -fsequential -b64 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o64 -fsequential -b128 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o64 -fsequential -b256 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o64 -frandom -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\n<span style=\"color: #ff6600;\">sqlio -kR -s120 -o128 -fsequential -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o128 -fsequential -b32 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o128 -fsequential -b64 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o128 -fsequential -b128 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o128 -fsequential -b256 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o128 -frandom -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o128 -fsequential -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o128 -fsequential -b32 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o128 -fsequential -b64 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o128 -fsequential -b128 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o128 -fsequential -b256 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o128 -frandom -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"<\/span>\r\n<span style=\"color: #3366ff;\">sqlio -kR -s120 -o256 -fsequential -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o256 -fsequential -b32 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o256 -fsequential -b64 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o256 -fsequential -b128 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o256 -fsequential -b256 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kR -s120 -o256 -frandom -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o256 -fsequential -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o256 -fsequential -b32 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o256 -fsequential -b64 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o256 -fsequential -b128 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o256 -fsequential -b256 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"\r\nsqlio -kW -s120 -o256 -frandom -b8 -BH -LS -F\"C:\\Program Files\\SQLIO\\my_param_file.txt\"<\/span><\/span>\r\n\r\n<span style=\"color: #3366ff;\">\u00a0<\/span><\/pre>\n<p>En tout 72 minutes de bench, trois pav\u00e9s avec 64, 128 et 256 outstanding IOs par thread. Le contenu du fichier de configuration my_param_file.txt :<\/p>\n<pre><span style=\"color: #0000ff;\">e:\\testfile.dat 4 0x0 51200<\/span><\/pre>\n<p>On utilisera donc 4 threads (1 par vCPU) sur un fichier de 50Gb. Le choix dans la taille du fichier de test est important car on souhaite tester le sous-syst\u00e8me disque et principalement le back-end de la baie. Il faut donc cr\u00e9er un fichier qui ne tienne ni dans le cache du DATACORE ni dans le cache du contr\u00f4leur I\/O de la baie, pour obliger celle-ci \u00e0 d\u00e9border sur les disques. Le plus gros datamart de l&#8217;application faisant 50Gb, on n&#8217;a donc pas choisi cette taille par hasard. On lance donc le script et on s&#8217;en va boire un caf\u00e9&#8230;<\/p>\n<pre><span style=\"color: #0000ff;\">C:\\Program Files\\SQLIO&gt;benchSQL.bat &gt; results.txt<\/span><\/pre>\n<h2>Int\u00e9gration des r\u00e9sultats en base:<\/h2>\n<p>Une fois le test termin\u00e9, il va falloir int\u00e9grer les r\u00e9sultats en base. Le script ci-dessous doit nous permettre de stocker le contenu du fichier results.txt dans une table et de l&#8217;afficher de mani\u00e8re simple et conviviale. Ce script est un d\u00e9riv\u00e9 de celui que propose Brent Ozar (<a href=\"http:\/\/www.brentozar.com\/\">blog<\/a>|<a href=\"http:\/\/www.google.com\/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBMQFjAA&amp;url=http%3A%2F%2Ftwitter.com%2Fbrento&amp;rct=j&amp;q=brento%20twitter&amp;ei=b3SGTaznAdKH5Aaay_jmCA&amp;usg=AFQjCNF7nMLkdSLEMVUlQMmawMZbgZJ-4w&amp;sig2=mlfMI6Sin4eYAQLZtzHmUg&amp;cad=rja\">twitter<\/a>) sur <a href=\"http:\/\/www.google.com\/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBMQFjAA&amp;url=http%3A%2F%2Fsqlserverpedia.com%2Fwiki%2FSAN_Performance_Tuning_with_SQLIO&amp;rct=j&amp;q=sqlio%20sqlserverpedia&amp;ei=1n6GTbqHBoWYhQfZvb2mAw&amp;usg=AFQjCNHbAxDQmYhug-uXPsFjE-qkevNUcQ&amp;sig2=k-L6_o_pogXCETR91ax-JQ&amp;cad=rja\">SQLServerPedia<\/a> et utilise une vue sur le fichier resultat brut plut\u00f4t qu&#8217;une table interm\u00e9diaire.<\/p>\n<pre><span style=\"color: #0000ff;\">create database <span style=\"color: #ff0000;\">SQLIO<\/span>\r\nGO\r\nuse <span style=\"color: #ff0000;\">SQLIO<\/span>\r\nGO\r\n\r\nCREATE TABLE [<span style=\"color: #0000ff;\">dbo<\/span>].[<span style=\"color: #ff0000;\">SQLIO_Import<\/span>](\r\n <span style=\"color: #0000ff;\">[RowID] [int] IDENTITY(1,1) NOT NULL,\r\n [ParameterRowID] [int] NULL,\r\n [ResultText] [varchar](max) NULL,\r\nCONSTRAINT [PK_SQLIO_Import] PRIMARY KEY CLUSTERED\r\n(\r\n [RowID] ASC\r\n))\r\nGO<\/span>\r\n\r\ncreate view <span style=\"color: #ff0000;\">v_sqlimport<\/span>\r\nas\r\nselect\r\n<span style=\"color: #008000;\">-- Test set #<\/span>\r\nrow_number() over (order by ParameterRowID) '<span style=\"color: #ff0000;\">Test set #<\/span>',\r\n<span style=\"color: #008000;\">-- SQLIO Version<\/span>\r\n(select substring(ResultText, 7, len(ResultText))\r\n from sqlio_import inner0 where ResultText like 'sqlio v%'\r\n and inner0.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">SQLIO Version<\/span>'\r\n<span style=\"color: #008000;\">-- # of threads<\/span>\r\n,(select substring(ResultText, charindex('with',ResultText) + 5,\r\n (charindex('threads',ResultText)-(charindex('with',ResultText)+5)))\r\n from sqlio_import inner1 where ResultText like '%using mask%'\r\n and inner1.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\"># of worker threads<\/span>'\r\n<span style=\"color: #008000;\">-- Read or Write<\/span>\r\n,(select substring(ResultText, charindex('-k',ResultText) + 2, 1)\r\n from sqlio_import inner2 where ResultText like '%&gt;sqlio%'\r\n and inner2.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Reads (R) | Writes (W)<\/span>'\r\n<span style=\"color: #008000;\">-- Duration (secs)<\/span>\r\n,(select substring(ResultText, charindex('-s',ResultText) + 2,\r\n ((charindex('-',ResultText,charindex('-s',ResultText)+2))-(charindex('-s',ResultText) + 2)))\r\n from sqlio_import inner3 where ResultText like '%&gt;sqlio%'\r\n and inner3.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Duration (sec)<\/span>'\r\n<span style=\"color: #008000;\">-- I\/O Size (Kb)<\/span>\r\n,(select substring(ResultText, charindex('-b',ResultText) + 2,\r\n ((charindex('-',ResultText,charindex('-b',ResultText)+2))-(charindex('-b',ResultText) + 2)))\r\n from sqlio_import inner4 where ResultText like '%&gt;sqlio%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">I\/O Size (Kb)<\/span>'\r\n<span style=\"color: #008000;\">-- I\/O Patterns<\/span>\r\n,(select substring(ResultText, charindex('-f',ResultText) + 2,\r\n ((charindex('-',ResultText,charindex('-f',ResultText)+2))-(charindex('-f',ResultText) + 2)))\r\n from sqlio_import inner4 where ResultText like '%&gt;sqlio%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">I\/O Pattern (Random | sequential)<\/span>'\r\n<span style=\"color: #008000;\">-- # outstanding I\/Os<\/span>\r\n,(select substring(ResultText, charindex('-o',ResultText) + 2,\r\n ((charindex('-',ResultText,charindex('-o',ResultText)+2))-(charindex('-o',ResultText) + 2)))\r\n from sqlio_import inner4 where ResultText like '%&gt;sqlio%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Outstanding I\/Os per thread<\/span>'\r\n<span style=\"color: #008000;\">-- File Size (Mb)<\/span>\r\n,(select substring(ResultText, charindex('size:',ResultText) + 6,\r\n ((charindex('MB',ResultText,charindex('size:',ResultText)+6))-(charindex('size:',ResultText) + 6)))\r\n from sqlio_import inner4 where ResultText like 'using specified size:%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Target File Size (Mb)<\/span>'\r\n<span style=\"color: #008000;\">-- IOPS<\/span>\r\n,(select substring(ResultText, charindex('IOs\/sec:',ResultText) + 8,\r\n ((len(ResultText)-(charindex('IOs\/sec:',ResultText) + 7))))\r\n from sqlio_import inner4 where ResultText like 'IOs\/sec:%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">IOPS<\/span>'\r\n<span style=\"color: #008000;\">-- MBPS<\/span>\r\n,(select substring(ResultText, charindex('MBs\/sec:',ResultText) + 8,\r\n ((len(ResultText)-(charindex('MBs\/sec:',ResultText) + 7))))\r\n from sqlio_import inner4 where ResultText like 'MBs\/sec:%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">MBPS<\/span>'\r\n<span style=\"color: #008000;\">-- Min Latency<\/span>\r\n,(select substring(ResultText, charindex('Min_Latency(ms):',ResultText) + 17,\r\n ((len(ResultText)-(charindex('Min_Latency(ms):',ResultText) + 16))))\r\n from sqlio_import inner4 where ResultText like 'Min_Latency(ms):%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Min Latency (ms)<\/span>'\r\n<span style=\"color: #008000;\">-- Avg Latency<\/span>\r\n,(select substring(ResultText, charindex('Avg_Latency(ms):',ResultText) + 17,\r\n ((len(ResultText)-(charindex('Avg_Latency(ms):',ResultText) + 16))))\r\n from sqlio_import inner4 where ResultText like 'Avg_Latency(ms):%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Avg Latency (ms)<\/span>'\r\n<span style=\"color: #008000;\">-- Max Latency<\/span>\r\n,(select substring(ResultText, charindex('Max_Latency(ms):',ResultText) + 17,\r\n ((len(ResultText)-(charindex('Max_Latency(ms):',ResultText) + 16))))\r\n from sqlio_import inner4 where ResultText like 'Max_Latency(ms):%'\r\n and inner4.ParameterRowID = imp.ParameterRowID) '<span style=\"color: #ff0000;\">Max Latency (ms)<\/span>'\r\nFROM\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\">dbo.sqlio_import imp<\/span>\r\nwhere <span style=\"color: #ff0000;\">ParameterRowID <\/span>is not null\r\nGROUP BY <span style=\"color: #ff0000;\">ParameterRowID<\/span>\r\nGO\r\n\r\nprint '<span style=\"color: #ff0000;\">Please import data now and then run:\r\n-- 1)\r\nUPDATE dbo.sqlio_import\r\nSET\u00a0\u00a0\u00a0 parameterrowid = (SELECT\u00a0\u00a0 TOP 1 rowid\r\n FROM\u00a0\u00a0\u00a0\u00a0 dbo.sqlio_import parm\r\n WHERE\u00a0\u00a0\u00a0 parm.resulttext LIKE ''%&gt;sqlio %''\r\n AND parm.rowid &lt;= upd.rowid\r\n ORDER BY rowid DESC)\r\nFROM\u00a0\u00a0 dbo.sqlio_import upd\r\nGO<\/span>'\r\nprint '\r\n<span style=\"color: #ff0000;\">--2)\r\nselect * from v_sqlimport order by MBPS desc, IOPS desc\r\nGO<\/span>'<\/span><\/pre>\n<p>A cette \u00e9tape, il ne reste plus qu&#8217;\u00e0 importer le fichier results.txt avec SSIS (Database -&gt; Tasks -&gt; Import Data&#8230;).\u00a0 Il faut penser notamment \u00e0 indiquer que le type de donn\u00e9es en entr\u00e9e est du DT_TEXT:<\/p>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO11.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2106\" title=\"importSQLIO1\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO11.jpg\" alt=\"\" width=\"535\" height=\"505\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO11.jpg 535w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO11-300x283.jpg 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/a><\/p>\n<p>Puis \u00e0 s\u00e9lectionner la table SQLIO_Import et colonne ResultText comme r\u00e9ceptacles du fichier results.txt:<\/p>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2107\" title=\"importSQLIO2\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO2.jpg\" alt=\"\" width=\"534\" height=\"497\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO2.jpg 534w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO2-300x279.jpg 300w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/a> <a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2108\" title=\"importSQLIO3\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO3.jpg\" alt=\"\" width=\"581\" height=\"470\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO3.jpg 581w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO3-300x242.jpg 300w\" sizes=\"auto, (max-width: 581px) 100vw, 581px\" \/><\/a><\/p>\n<p>Une fois l&#8217;import du fichier termin\u00e9, il ne reste plus qu&#8217;\u00e0 ex\u00e9cuter les t\u00e2ches de post-import:<\/p>\n<pre><span style=\"color: #0000ff;\">UPDATE dbo.sqlio_import\r\nSET\u00a0\u00a0\u00a0 parameterrowid = (SELECT\u00a0\u00a0 TOP 1 rowid\r\n FROM\u00a0\u00a0\u00a0\u00a0 dbo.sqlio_import parm\r\n WHERE\u00a0\u00a0\u00a0 parm.resulttext LIKE '%&gt;sqlio %'\r\n AND parm.rowid &lt;= upd.rowid\r\n ORDER BY rowid DESC)\r\nFROM\u00a0\u00a0 dbo.sqlio_import upd\r\nGO<\/span>\r\n<em><span style=\"color: #008000;\">(834\u00a0ligne(s) affect\u00e9e(s))<\/span><\/em><\/pre>\n<p>Puis appeler la vue:<\/p>\n<pre><span style=\"color: #0000ff;\">select * from v_sqlimport order by MBPS desc, IOPS desc\r\nGO\r\n\r\n<a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO5.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2109\" title=\"importSQLIO5\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO5.jpg\" alt=\"\" width=\"1254\" height=\"230\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO5.jpg 1254w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO5-300x55.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO5-768x141.jpg 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/03\/importSQLIO5-1024x187.jpg 1024w\" sizes=\"auto, (max-width: 1254px) 100vw, 1254px\" \/><\/a>\r\n<\/span><\/pre>\n<h2>R\u00e9sultats<\/h2>\n<p><strong>L\u00e9gende: <\/strong><\/p>\n<p>&#8211; R8random128: reads 8K random 128 outstanding IOs<br \/>\n&#8211; R8sequential128: reads 8K sequential 128 outstanding IOs<br \/>\n&#8211; W8random128: writes 8K random 128 outstanding IOs<br \/>\n&#8211; etc&#8230;<\/p>\n<ul>\n<li><strong>BANC1 vs BANC2: <\/strong>pas besoin de photo finish pour les d\u00e9partager:<\/li>\n<\/ul>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-2171\" title=\"comp1\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp1-1024x443.jpg\" alt=\"\" width=\"1024\" height=\"443\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp1-1024x443.jpg 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp1-300x129.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp1-768x333.jpg 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp1.jpg 1300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-2172\" title=\"comp2\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp2-1024x447.jpg\" alt=\"\" width=\"1024\" height=\"447\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp2-1024x447.jpg 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp2-300x131.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp2-768x335.jpg 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp2.jpg 1328w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>680Mb\/s sur du read-ahead, on peut difficilement battre un tel r\u00e9sultat \u00e0 part peut \u00eatre avec des SSD, qui eux offrent en plus un stockage r\u00e9silient.<\/p>\n<ul>\n<li><strong>BANC1 vs BANC3: <\/strong>avec ou sans Datacore ? c&#8217;est le m\u00eame constat.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/IOPS.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-2196\" title=\"IOPS\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/IOPS-1024x502.jpg\" alt=\"\" width=\"1024\" height=\"502\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/IOPS-1024x502.jpg 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/IOPS-300x147.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/IOPS-768x377.jpg 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/IOPS.jpg 1395w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/DEBIT.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-2197\" title=\"DEBIT\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/DEBIT-1024x489.jpg\" alt=\"\" width=\"1024\" height=\"489\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/DEBIT-1024x489.jpg 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/DEBIT-300x143.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/DEBIT-768x367.jpg 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/DEBIT.jpg 1396w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-2175\" title=\"comp6\" src=\"http:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6-1023x541.jpg\" alt=\"\" width=\"1023\" height=\"541\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6-1023x541.jpg 1023w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6-300x158.jpg 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6-768x406.jpg 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6-1024x542.jpg 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/comp6.jpg 1469w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/a><\/p>\n<p>Je dois avouer que j&#8217;ai \u00e9t\u00e9 tr\u00e8s surpris des performances offertes par la solution de Datacore. Ca peut \u00eatre une arme terrible pour \u00e9craser tous les probl\u00e8mes de latence IO dans des environnements virtualis\u00e9s&#8230; En attendant la globalisation des SSD, et avec sa solution de r\u00e9plication de blocs, Datacore a encore de beaux jours devant lui.<\/p>\n<p>A+. David B.<\/p>\n<p><em><strong>R\u00e9f\u00e9rences:<\/strong><\/em><\/p>\n<p>[1]: <a href=\"http:\/\/www.google.com\/url?sa=t&amp;source=web&amp;cd=1&amp;sqi=2&amp;ved=0CBQQFjAA&amp;url=http%3A%2F%2Fwww.vmware.com%2Ffiles%2Fpdf%2Fperf-vsphere-monitor_modes.pdf&amp;rct=j&amp;q=Virtual%20Machines%20Execution%20Modes%20in%20VSphere%204.0%2C%20Nikhil%20Bhatia%2C%20VMWare%20Corp&amp;ei=EfS2Tb6mK8qx8QOA8JFD&amp;usg=AFQjCNG245enzqG2IwvJAEqcNbRiJQtE7Q&amp;sig2=UhzTVj0JSkCmQES8GG7H_w&amp;cad=rja\">Virtual Machines Execution Modes in VSphere 4.0, Nikhil Bhatia, VMWare Corp<\/a><br \/>\n[2]: Storage Block Alignment with VMWare Virtual Infrastructure, Tim Coste, juillet 2007, TR-3593<\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F2101&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F2101&#038;title=Bench%20avec%20NetApp%20%2F%20Datacore%20%2F%20ESX\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Bench%20avec%20NetApp%20%2F%20Datacore%20%2F%20ESX&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F2101\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>J&#8217;ai r\u00e9cemment eu l&#8217;occasion de pouvoir effectuer un bench IO sur une plateforme SQL Server sous ESX avec un couple Datacore \/ NetApp au niveau du stockage. Contexte technique: DataCore SANMelody \/ NetApp: Le but de la man\u0153uvre est de&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":2147,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[198,197,199],"class_list":["post-2101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sqlserver","tag-datacore","tag-sqlio","tag-virtualisation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Bench avec NetApp \/ Datacore \/ ESX - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bench avec NetApp \/ Datacore \/ ESX - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"J&#8217;ai r\u00e9cemment eu l&#8217;occasion de pouvoir effectuer un bench IO sur une plateforme SQL Server sous ESX avec un couple Datacore \/ NetApp au niveau du stockage. Contexte technique: DataCore SANMelody \/ NetApp: Le but de la man\u0153uvre est de&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2011-04-26T17:23:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-09-13T13:45:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"999\" \/>\n\t<meta property=\"og:image:height\" content=\"741\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Bench avec NetApp \/ Datacore \/ ESX\",\"datePublished\":\"2011-04-26T17:23:47+00:00\",\"dateModified\":\"2019-09-13T13:45:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\"},\"wordCount\":1442,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"datacore\",\"sqlio\",\"virtualisation\"],\"articleSection\":[\"SQL Server\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\",\"name\":\"Bench avec NetApp \/ Datacore \/ ESX - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2011-04-26T17:23:47+00:00\",\"dateModified\":\"2019-09-13T13:45:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bench avec NetApp \/ Datacore \/ ESX\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bench avec NetApp \/ Datacore \/ ESX - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/","og_locale":"fr_FR","og_type":"article","og_title":"Bench avec NetApp \/ Datacore \/ ESX - Capdata TECH BLOG","og_description":"J&#8217;ai r\u00e9cemment eu l&#8217;occasion de pouvoir effectuer un bench IO sur une plateforme SQL Server sous ESX avec un couple Datacore \/ NetApp au niveau du stockage. Contexte technique: DataCore SANMelody \/ NetApp: Le but de la man\u0153uvre est de&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2011-04-26T17:23:47+00:00","article_modified_time":"2019-09-13T13:45:49+00:00","og_image":[{"width":999,"height":741,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/04\/Datacore1.jpg","type":"image\/jpeg"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Bench avec NetApp \/ Datacore \/ ESX","datePublished":"2011-04-26T17:23:47+00:00","dateModified":"2019-09-13T13:45:49+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/"},"wordCount":1442,"commentCount":8,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["datacore","sqlio","virtualisation"],"articleSection":["SQL Server"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/","url":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/","name":"Bench avec NetApp \/ Datacore \/ ESX - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2011-04-26T17:23:47+00:00","dateModified":"2019-09-13T13:45:49+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/bench-avec-netapp-datacore-esx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Bench avec NetApp \/ Datacore \/ ESX"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/2101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=2101"}],"version-history":[{"count":84,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/2101\/revisions"}],"predecessor-version":[{"id":2195,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/2101\/revisions\/2195"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/2147"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=2101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=2101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=2101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}