urn:noticeable:projects:bYyIewUV308AvkMztxixSherlock changelogwww.sherlock.stanford.edu2024-02-08T00:29:40.623ZCopyright © SherlockNoticeablehttps://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/newspages/GtmOI32wuOUPBTrHaeki/01h55ta3gs1vmdhtqqtjmk7m4z-header-logo.pnghttps://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/newspages/GtmOI32wuOUPBTrHaeki/01h55ta3gs1vmdhtqqtjmk7m4z-header-logo.png#8c1515urn:noticeable:publications:VKxO5IXJlMStQurJnpwv2024-02-07T23:49:24.699Z2024-02-08T00:29:40.623ZSherlock goes full flashWhat could be more frustrating than anxiously waiting for your computing job to finish? Slow I/O that makes it take even longer is certainly high on the list. But not anymore! Fir, Sherlock’s scratch file system, has just undergone a major<p>What could be more frustrating than anxiously waiting for your computing job to finish? Slow I/O that makes it take even longer is certainly high on the list. But not anymore! <a href="https://news.sherlock.stanford.edu/publications/a-new-scratch?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Fir"><strong>Fir</strong></a><strong>,</strong> <strong>Sherlock’s scratch file system, has just undergone a major tech face-lift: it’s now</strong> <strong>a 10 PB all-flash storage system, providing an aggregate bandwidth of</strong> <strong>400 GB/sec</strong> (and &gt;800 kIOPS). Bringing Sherlock’s high-performance parallel scratch file system into the era of flash storage was not just a routine maintenance task, but a significant leap into the future of HPC and AI computing.</p><h2>But first, a little bit of context </h2><p>Traditionally, High-Performance Computing clusters face a challenge when dealing with modern, data-intensive applications. Existing HPC storage systems, long designed with spinning disks to provide efficient and parallel sequential read/write operations, often become bottlenecks for modern workloads generated by AI/ML or CryoEM applications. Those demand substantial data storage and processing capabilities, putting a strain on traditional systems.</p><p>So to accommodate those new needs and future evolution of the HPC I/O landscape, we at Stanford Research Computing, with the generous support of the <a href="https://doresearch.stanford.edu/who-we-are/office-vice-provost-and-dean-research?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Office of the Stanford VPDoR">Vice Provost and Dean of Research</a>, have been hard at work for over two years, revamping Sherlock's scratch with an all-flash system. </p><p>And it was not just a matter of taking delivery of a new turn-key system. As most things we do, it was done entirely in-house: from the original vendor-agnostic design, upgrade plan, budget requests, procurement, gradual in-place hardware replacement at the Stanford Research Computing Facility (SRCF), deployment and validation, performance benchmarks, to the final production stages, all of those steps were performed with minimum disruption for all Sherlock users.</p><h2>The technical details</h2><p>The <code>/scratch</code> file system on Sherlock is using <a href="https://wiki.lustre.org/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Lustre">Lustre</a>, an open-source, parallel file system that supports many requirements of leadership class HPC environments. And as you probably know by now, Stanford Research Computing loves <a href="https://github.com/stanford-rc?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="open source">open source</a>! We actively contribute to the Lustre community and are a proud member of <a href="https://opensfs.org/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="OpenSFS">OpenSFS</a>, a non-profit industry organization that supports vendor-neutral development and promotion of Lustre.</p><p>In Lustre, file metadata and data are stored separately, with Object Storage Servers (OSS) serving file data on the network. Each OSS pair and associated storage devices forms an I/O cell, and Sherlock's scratch has just bid farewell to its old HDD-based I/O cells. In their place, new flash-based I/O cells have taken the stage, each equipped with 96 x 15.35TB SSDs, delivering mind-blowing performance.</p><p>Sherlock’s <code>/scratch</code> has 8 I/O cells and the goal was to replace every one of them. Our new I/O cell has 2 OSS with Infiniband HDR at 200Gb/s (or 25GB/s) connected to 4 storage chassis, each with 24 x 15.35TB SSD (dual-attached 12Gb/s SAS), as pictured below:</p><p><span style="color: #000000;"></span></p><figure><img src="https://lh7-us.googleusercontent.com/gI-D9jEmQeMntz4clh3TNYF60Q6Xep5cMcwQqHL3TGX_9H7L0m_6MgjDlPfSQrUtSBsh5l9bVa8Nddamm4BHzsQwk1S5Q5s9Wq_i8wdGGcXXnOD5wW_kqTJDQXjdwGEb7VYN1gSNPHccCYBc9iEzgTM" alt="" height="284" loading="lazy" title="" width="562"></figure><br><br>Of course, you can’t just replace each individual rotating hard-drive with a SSD, there are some infrastructure changes required, and some reconfiguration needed. The upgrade, executed between January 2023 and January 2024, was a seamless transition. Old HDD-based I/O cells were gracefully retired, one by one, while flash-based ones progressively replaced them, gradually boosting performance for all Sherlock users throughout the year.<br><span style="color: #000000;"><figure><img src="https://lh7-us.googleusercontent.com/B7lwfOxhKxKc-kDeQZkZ63exdm99PnDvete7-03-wD3906KQ_BaUOAGpzuNRa1nrZ_UdcCz_XcPusFZGA60zH6xWSMR60WDz-C6q-qg2BetwYGf1Ytpevnr0Hg5cN9kVPnEVRkeRRfqJBXje3AvmAXo" alt="" height="332" loading="lazy" title="" width="472"></figure></span><br>All of those replacements happened while the file system was up and running, serving data to the thousands of computing jobs that run on Sherlock every day. Driven by our commitment to minimize disruptions to users, our top priority was to ensure uninterrupted access to data throughout the upgrade. Data migration is never fun, and we wanted to avoid having to ask users to manually transfer their files to a new, separate storage system. This is why we developed and <a href="https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commit;h=1121816c4a4e1bb2ef097c4a9802362181c43800&amp;utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="del_ost commit">contributed</a> a new feature in Lustre, which allowed us to seamlessly remove existing storage devices from the file system, before the new flash drives could be added. More technical details about the upgrade have been <a href="http://www.eofs.eu/wp-content/uploads/2024/02/2.5-stanfordrc_s_thiell.pdf?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="presentation slides">presented</a> during the <a href="https://www.eofs.eu/index.php/events/lad-22/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="LAD'22">LAD’22</a> conference.<p></p><p><strong>Today, we are happy to announce that the upgrade is officially complete, and Sherlock stands proud with a whopping 9,824 TB of solid-state storage in production. No more spinning disks in sight!</strong></p><h2>Key benefits</h2><p>For users, the immediately visible benefits are quicker access to their files, faster data transfers, shorter job execution times for I/O intensive applications. More specifically, every key metric has been improved:</p><ul><li><p>IOPS: over <strong>100x</strong> (results may vary, see below)</p></li><li><p>Backend bandwidth: <strong>6x</strong> (128 GB/s to 768 GB/s)</p></li><li><p>Frontend bandwidth: <strong>2x</strong> (200 GB/s to 400 GB/s)</p></li><li><p>Usable volume: <strong>1.6x</strong> (6.1 PB to 9.8 PB)<br></p></li></ul><p>In terms of measured improvement, the graph below shows the impact of moving to full-flash storage for reading data from 1, 8 and 16 compute nodes, compared to the previous <code>/scratch</code> file system: </p><p><span style="color: #000000;"></span></p><figure><img src="https://lh7-us.googleusercontent.com/a1wBmS1DW--_SfmLz5iyYRChlTp8MSuE7VKNKinX2nBgzb6iRiNeiSqa5zuXQrTvN1YztMqTLBVPdc_gqA1lrqOpQh7ZA1FzsNdS4VToP_okzXIhbWdzS2rWtUD33joDAaFV4m7eSMQp6DB8se6PY_Y" alt="" height="387" loading="lazy" title="" width="624"></figure><p></p><p>And we even tried to replicate the I/O patterns of <a href="https://github.com/google-deepmind/alphafold?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-goes-full-flash&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VKxO5IXJlMStQurJnpwv&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="AlphaFold">AlphaFold</a>, a well-known AI model to predict protein structure, and the benefits are quite significant, with up to 125x speedups in some cases:</p><p><span style="color: #000000;"></span></p><figure><img src="https://lh7-us.googleusercontent.com/4qvJD4MDJwjdlyKLcE4F24ZaaqanbQHjS1CkxPVWvzBKHphgLLAfa0QoepWrbOYOtwLFnYLrwLHTyS1NatKDItsDI63mlC1mxhac6RSFKSHCLyiEOykLBnHw7ziqM5uQ0VTVmmLd5BPPJpNF6bNUN70" alt="" height="335" loading="lazy" title="" width="624"></figure><br><br>This upgrade is a major improvement that will benefit all Sherlock users, and Sherlock’s enhanced I/O capabilities will allow them to approach data-intensive tasks with unprecedented efficiency. We hope it will help support the ever-increasing computing needs of the Stanford research community, and enable even more breakthroughs and discoveries. <p></p><p>As usual, if you have any question or comment, please don’t hesitate to reach out to Research Computing at <a href="mailto:[email protected]" rel="noopener nofollow" target="_blank" title="[email protected]">[email protected]</a>. 🚀🔧<br><br></p>Stéphane Thiell & Kilian Cavalotti[email protected]urn:noticeable:publications:fVC8v76vTKAPzyy0I0Lh2023-04-27T01:05:18.100Z2023-04-27T19:00:07.260ZInstant lightweight GPU instances are now availableWe know that getting access to GPUs on Sherlock can be difficult and feel a little frustrating at times. Which is why we are excited to announce the immediate availability of our new instant lightweight GPU instances!<p>We know that getting access to GPUs on Sherlock can be difficult and feel a little frustrating at times. Demand has been steadily growing, leading to long pending times, and waiting in line rarely feels great, especially when you have important work to do. </p><p>Which is why we are excited to announce the immediate availability of our latest addition to the Sherlock cluster: <strong>instant lightweight GPU instances</strong>! Every user can now get immediate access to a GPU instance, for a quick debugging session or to explore new ideas in a Notebook.<br><br>GPUs are the backbone of high-performance computing. They’ve become an integral component of the toolbox for many users, and are essential for deep learning, scientific simulations, and many other applications. But you don’t always need a full-fledged, top-of-the-line GPU for all your tasks. Sometimes all you want is to run a quick test to prototype an idea, debug a script, or explore new data in an interactive Notebook. For this, the new lightweight GPU instances on Sherlock will give you instant access to a GPU, without having to wait in line and compete with other jobs for resources you don’t need.<br><br>Sherlock’s instant lightweight GPU instances leverage NVIDIA’s <a href="https://www.nvidia.com/en-us/technologies/multi-instance-gpu/?utm_source=noticeable&amp;utm_campaign=sherlock.instant-lightweight-gpu-instances-are-now-available&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.fVC8v76vTKAPzyy0I0Lh&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="NVIDIA Multi-Instance GPU">Multi-Instance GPU</a> (MIG) to provide multiple fully isolated GPU instances on the same physical GPU, each with their own high-bandwidth memory, cache, and compute cores. Those lightweight instances are ideal for small to medium-sized jobs, and lower the barrier to entry for all users<br><br>Similar to the interactive sessions available through the <code>dev</code> partition, Sherlock users can now request a GPU via the <code>sh_dev</code> command, and get immediate access with the following command:</p><pre><code>$ sh_dev -g 1</code></pre><p>For interactive apps in the <a href="https://www.sherlock.stanford.edu/docs/user-guide/ondemand/?utm_source=noticeable&amp;utm_campaign=sherlock.instant-lightweight-gpu-instances-are-now-available&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.fVC8v76vTKAPzyy0I0Lh&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock OnDemand docs">Sherlock OnDemand</a> interface, requesting a GPU in the <code>dev</code> partition will initiate an interactive session with access to a lightweight GPU instance.<br></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/fVC8v76vTKAPzyy0I0Lh/01h55ta3gsgn6y7qksqsnbat6e-image.png" alt="" height="265.6474576271186" loading="lazy" title="" width="443.99999999999994"></figure><p></p><p><br>So now, everyone gets a GPU, no questions asked! 😁</p><p style="text-align: center;"></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/fVC8v76vTKAPzyy0I0Lh/01h55ta3gsjw21hcsf0z70n9he-image.png" alt="" loading="lazy" title=""></figure><p></p><p><br>We hope those new instances will improve access to GPUs on Sherlock, enable a wider range of use cases, with all the flexibility and performance you need to get your work done, and lead to even more groundbreaking discoveries!</p><p>As always, thanks to all of our users for your continuous support and patience as we work to improve Sherlock, and if you have any question or comment, please don’t hesitate to reach out at <a href="mailto:[email protected]" rel="noopener" target="_blank">[email protected]</a>.<br></p>Kilian Cavalotti[email protected]urn:noticeable:publications:MARmnxM2JHvznq8MaK6q2022-12-14T17:27:18.657Z2022-12-14T17:27:26.687ZMore free compute on Sherlock!We’re thrilled to announce that the free and generally available normal partition on Sherlock is getting an upgrade! With the addition of 24 brand new SH3_CBASE.1 compute nodes, each featuring one AMD EPYC 7543 Milan 32-core CPU and 256 GB<p>We’re thrilled to announce that the free and generally available <code>normal</code> partition on Sherlock is getting an upgrade!<br><br>With the addition of 24 brand new <a href="https://www.sherlock.stanford.edu/docs/orders/?h=cbase&amp;utm_source=noticeable&amp;utm_campaign=sherlock.more-free-compute-on-sherlock&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.MARmnxM2JHvznq8MaK6q&amp;utm_medium=newspage#configurations" rel="noopener nofollow" target="_blank" title="Sherlock node configurations">SH3_CBASE.1</a> compute nodes, each featuring one <a href="https://www.amd.com/en/products/cpu/amd-epyc-7543?utm_source=noticeable&amp;utm_campaign=sherlock.more-free-compute-on-sherlock&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.MARmnxM2JHvznq8MaK6q&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="AMD EPYC 7543">AMD EPYC 7543</a> Milan 32-core CPU and 256 GB of RAM, Sherlock users now have 768 more CPU cores at there disposal. Those new nodes will complete the existing 154 compute nodes and 4,032 core in that partition, for a <strong>new total of 178 nodes and 4,800 CPU cores.</strong><br><br>The <code>normal</code> partition is Sherlock’s shared pool of compute nodes, which is available <a href="https://www.sherlock.stanford.edu/?utm_source=noticeable&amp;utm_campaign=sherlock.more-free-compute-on-sherlock&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.MARmnxM2JHvznq8MaK6q&amp;utm_medium=newspage#how-much-does-it-cost" rel="noopener nofollow" target="_blank" title="Sherlock cost">free of charge</a> to all Stanford Faculty members and their research teams, to support their wide range of computing needs. <br><br>In addition to this free set of computing resources, Faculty can supplement these shared nodes by <a href="https://www.sherlock.stanford.edu/docs/orders/?utm_source=noticeable&amp;utm_campaign=sherlock.more-free-compute-on-sherlock&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.MARmnxM2JHvznq8MaK6q&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Purchasing Sherlock compute nodes">purchasing additional compute nodes</a>, and become Sherlock owners. By investing in the cluster, PI groups not only receive exclusive access to the nodes they purchased, but also get access to all of the other owner compute nodes when they're not in use, thus giving them access to the <a href="https://www.sherlock.stanford.edu/docs/tech/facts/?utm_source=noticeable&amp;utm_campaign=sherlock.more-free-compute-on-sherlock&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.MARmnxM2JHvznq8MaK6q&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock facts">whole breadth of Sherlock resources</a>, currently over over 1,500 compute nodes, 46,000 CPU cores and close to 4 PFLOPS of computing power.<br><br>We hope that this new expansion of the <code>normal</code> partition, made possible thanks to additional funding provided by the University Budget Group as part of the FY23 budget cycle, will help support the ever-increasing computing needs of the Stanford research community, and enable even more breakthroughs and discoveries.<br><br>As usual, if you have any question or comment, please don’t hesitate to reach out at <a href="mailto:[email protected]" rel="noopener" target="_blank">[email protected]</a>.<br><br><br><br></p>Kilian Cavalotti[email protected]urn:noticeable:publications:Hdh5qDe3icyS6vJXdQpt2021-11-30T17:00:00Z2021-11-30T18:27:25.812ZFrom Rome to Milan, a Sherlock catalog updateIt’s been almost a year and a half since we first introduced Sherlock 3.0 and its major new features: brand new CPU model and manufacturer, 2x faster interconnect, much larger and faster node-local storage, and more! We’ve now reached an<p>It’s been almost a year and a half since we first <a href="https://news.sherlock.stanford.edu/publications/sherlock-3-0-is-here?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock 3.0">introduced Sherlock 3.0</a> and its major new features: brand new CPU model and manufacturer, 2x faster interconnect, much larger and faster node-local storage, and more! We’ve now reached an inflexion point in Sherlock’s current generation and it’s time to update the hardware configurations available for purchase in the <a href="https://www.sherlock.stanford.edu/catalog?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock catalog">Sherlock catalog</a>.<br><br>So today, <strong>we’re introducing a new Sherlock catalog refresh</strong>, a Sherlock 3.5 of sorts.</p><h1>The new catalog</h1><p>So, what changes? What stays the same?<br>In a nutshell, you’ll continue to be able to purchase the existing node types that you’re already familiar with:</p><p><strong>CPU configurations:</strong></p><ul><li><p><code>CBASE</code>: base configuration ($)</p></li><li><p><code>CPERF</code>: high core-count configuration ($$)</p></li><li><p><code>CBIGMEM</code>: large-memory configuration ($$$$)</p></li></ul><p><strong>GPU configurations</strong></p><ul><li><p><code>G4FP32</code>: base GPU configuration ($$)</p></li><li><p><code>G4TF64</code>: HPC GPU configuration ($$$)</p></li><li><p><code>G8TF64</code>: best-in-class GPU configuration ($$$$)</p></li></ul><p>But they now come with better and faster components!<br><br><em>To avoid confusion, the configuration names in the catalog will be suffixed with a index to indicate the generational refresh, but will keep the same global denomination. For instance, the previous <code>SH3_CBASE</code> configuration is now replaced with a <code>SH3_CBASE.1</code> configuration that still offers 32 CPU cores and 256 GB of RAM.</em></p><h2>A new CPU generation</h2><p>The main change in the existing configuration is the introduction of the new <a href="https://www.amd.com/en/processors/epyc-7003-series?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="AMD EPYC™ 7003 Series Processors">AMD 3rd Gen EPYC Milan</a> CPUs. In addition to the advantages of the previous Rome CPUs, this new generation brings:</p><ul><li><p>a new micro-architecture (Zen3)</p></li><li><p>a ~20% performance increase in instructions completed per clock cycle (IPC)</p></li><li><p>enhanced memory performance, with a unified 32 MB L3 cache</p></li><li><p>improved CPU clock speeds</p></li></ul><p></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/Hdh5qDe3icyS6vJXdQpt/01h55ta3gsmvbh16hzp4z34xt9-image.jpg" alt="" loading="lazy" title=""></figure><p></p><p>More specifically, for Sherlock, the following CPU models are now used:</p><table><tbody><tr><th data-colwidth="105"><p>Model</p></th><th><p>Sherlock 3.0 (Rome)</p></th><th><p>Sherlock 3.5 (Milan)</p></th></tr><tr><td data-colwidth="105"><p><code>CBASE</code></p></td><td><p>1× 7502 (32-core, 2.50GHz)</p></td><td><p>1× 7543 (32-core, 2.75GHz)</p></td></tr><tr><td data-colwidth="105"><p><code>CPERF</code></p></td><td><p>2× 7742 (64-core, 2.25GHz)</p></td><td><p>2× 7763 (64-core, 2.45GHz)</p></td></tr><tr><td data-colwidth="105"><p><code>CBIGMEM</code></p></td><td><p>2× 7502 (32-core, 2.50GHz)</p></td><td><p>2× 7543 (32-core, 2.75GHz)</p></td></tr><tr><td data-colwidth="105"><p><code>G4FP32</code></p></td><td><p>1× 7502 (32-core, 2.50GHz)</p></td><td><p>1× 7543 (32-core, 2.75GHz)</p></td></tr><tr><td data-colwidth="105"><p><code>G4TF64</code></p></td><td><p>2× 7502 (32-core, 2.50GHz)</p></td><td><p>2× 7543 (32-core, 2.75GHz)</p></td></tr><tr><td data-colwidth="105"><p><code>G8TF64</code></p></td><td><p>2× 7742 (64-core, 2.25GHz)</p></td><td><p>2× 7763 (64-core, 2.45GHz)</p></td></tr></tbody></table><p>In addition to IPC and L3 cache improvements, the new CPUs also bring a frequency boost that will provide a substantial performance improvement.<br></p><h2>New GPU options</h2><p>On the GPU front, the two main changes are the re-introduction of the <code>G4FP32</code> model, and the doubling of GPU memory all across the board.<br><br>GPU memory is quickly becoming the constraining factor for training deep-learning models that keep increasing in size. Having large amounts of GPU memory is now key for running medical imaging workflows, computer vision models, or anything that requires processing large images.</p><p>The entry-level <code>G4FP32</code> model is back in the catalog, with a new <a href="NVIDIA A40" rel="noopener nofollow" target="_blank" title="https://www.nvidia.com/en-us/data-center/a40/">NVIDIA A40 GPU</a> in an updated <code>SH3_G4FP32.2</code> configuration. The A40 GPU not only provides higher performance than the previous model it replaces, but it also comes with twice as much GPU memory, with a whopping 48GB of GDDR6.<br></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/Hdh5qDe3icyS6vJXdQpt/01h55ta3gsf1ph3715608pjxhk-image.png" alt="" loading="lazy" title=""></figure><p></p><p>The higher-end <code>G4TF64</code> and <code>G8TF64</code> models have also been updated with newer AMD CPUs, as well as updated versions of the <a href="https://www.nvidia.com/en-us/data-center/a100/?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="NVIDIA A100">NVIDIA A100 GPU</a>, now each featuring a massive 80GB of HBM2e memory.<br></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/Hdh5qDe3icyS6vJXdQpt/01h55ta3gsx86d48cxj1sx0zf1-image.png" alt="" loading="lazy" title=""></figure><p></p><h1>Get yours today!</h1><p>For more details and pricing, please check out the <a href="https://www.sherlock.stanford.edu/catalog?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener" target="_blank">Sherlock catalog</a> <em>(SUNet ID required)</em>.<br><br>If you’re interested in <a href="https://www.sherlock.stanford.edu/docs/orders/?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="purchasing process">getting your own compute nodes</a> on Sherlock, all the new configurations are available for purchase today, and can be ordered online though the <a href="https://www.sherlock.stanford.edu/order?utm_source=noticeable&amp;utm_campaign=sherlock.from-rome-to-milan-a-sherlock-catalog-update&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.Hdh5qDe3icyS6vJXdQpt&amp;utm_medium=newspage" rel="noopener" target="_blank">Sherlock order form</a> <em>(SUNet ID required)</em>.<br><br>As usual, please don’t hesitate to <a href="mailto:[email protected]" rel="noopener" target="_blank">reach out</a> if you have any questions!</p>Kilian Cavalotti[email protected]urn:noticeable:publications:nxYhogleTbG5uVFkz1FC2021-04-03T00:00:00Z2021-04-03T00:50:17.280Z3.3 PFlops: Sherlock hits expansion milestoneSherlock is a traditional High-Performance Computing cluster in many aspects. But unlike most of similarly-sized clusters where hardware is purchased all at once, and refreshed every few years, it is in constant evolution. Almost like a<p><a href="https://www.sherlock.stanford.edu?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock">Sherlock</a> is a traditional High-Performance Computing cluster in many aspects. But unlike most of similarly-sized clusters where hardware is purchased all at once, and refreshed every few years, it is in constant evolution. Almost like a living organism, it changes all the time: mostly expanding as individual PIs, research groups, labs and even whole <a href="https://www.stanford.edu/academics/schools/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Stanford's Seven Schools">Schools</a> contribute computing resources to the system ; but also sometimes contracting, when older equipment is retired.</p><h2>A significant expansion milestone</h2><p>A few days ago, Sherlock has reached a major expansion milestone, largely owing to significant purchases from the <a href="https://earth.stanford.edu?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="School of Earth, Energy &amp; Environmental Sciences">School of Earth, Energy &amp; Environmental Sciences</a>, but also thanks to multiple existing owner groups who decided to renew their investment in Sherlock by purchasing additional hardware. <br><br>With these recent additions, Sherlock reached a theoretical power of over <strong>3 Petaflops</strong>, 3 thousand million million (10<sup>15</sup>) floating-point operations per second. That would place it around the 150th position in the most recent <a href="https://top500.org/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="TOP500 list">TOP500</a> list of the most powerful computer systems in the world.<br><br>Among the newly added nodes, a number of <code><a href="https://news.sherlock.stanford.edu/publications/new-gpu-options-in-the-sherlock-catalog?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="New GPU options">SH3_G8TF64</a></code><a href="https://news.sherlock.stanford.edu/publications/new-gpu-options-in-the-sherlock-catalog?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="New GPU options"> nodes</a>, each featuring 128 CPU cores, 1TB of RAM, 8x <a href="https://www.nvidia.com/en-us/data-center/a100/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="A100 GPU">A100 SXM4 GPUs</a> (NVLink) and two Infiniband HDR interfaces providing 400Gb/s of interconnect bandwidth, both for storage and inter-node communication. Those nodes alone provide over half a Petaflop of computing power.<br><br>Sherlock now features over <strong>1,700 compute nodes</strong>, occupying 45 data-center racks, and consuming close to half a megawatt of power. Over <strong>44,000 CPU cores</strong>, more than 120 Infiniband switches and close to 20 miles of cables help support the daily computing activities of over 5,000 users. <em>For even more facts and numbers, checkout the <a href="https://www.sherlock.stanford.edu/docs/overview/tech/facts/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock facts">Sherlock Facts</a> page!</em></p><h2>A steady growth</h2><p>Since in first days in 2014, and its initial 120 nodes, Sherlock has been growing at a steady pace. Three generations and as many Infiniband fabrics later, and after a few months of slowdown at the beginning of 2020, expansion has resumed and is going stronger than ever: <br></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/nxYhogleTbG5uVFkz1FC/01h55ta3gsq59rjhfw223xjdtv-image.png" alt="" loading="lazy" title=""></figure><p></p><table><tbody><tr><td><p></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/nxYhogleTbG5uVFkz1FC/01h55ta3gsc37fabfksytx5c91-image.png" alt="" loading="lazy" title=""></figure><p></p></td><td><p></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/nxYhogleTbG5uVFkz1FC/01h55ta3gshsb65ge585zgsjzr-image.png" alt="" loading="lazy" title=""></figure><p></p></td></tr></tbody></table><h2>The road ahead</h2><p>To keep expanding Sherlock and continue to serve the computing needs of the Stanford research community, rack space used by first generation Sherlock nodes needs to be reclaimed to make room for the next generation. Those 1st-gen nodes have been running well over their initial service life of 4 years, and in most cases, we’ve even been able to keep them running for an extra year. But data-center space being the hot property it has now become, and since demand for new nodes is not exactly dwindling down, we’ll be starting to retire the older Sherlock nodes to accommodate the ever-increasing requests for more computing power. We’ve started working on renewal plans with those node owners, and the process is already underway. <br><br>So for a while, Sherlock will shrink in size, as old nodes are retired. Before it can start growing again!</p><h2>Catalog changes</h2><p>As we move forward, the <a href="https://www.sherlock.stanford.edu/catalog/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock Catalog">Sherlock Compute Nodes Catalog</a> is also evolving, to follow the latest technological trends, and to adapt to the computing needs of our research community.<br><br>As part of this evolution, the <a href="https://news.sherlock.stanford.edu/publications/sh-3-g-4-fp-32-nodes-are-back-in-the-catalog?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-expansion-milestone&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.nxYhogleTbG5uVFkz1FC&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="SH3_G4FP32 nodes are back in the catalog!">recently announced</a> <code>SH3_G4FP32</code> configuration is sadly not available anymore, as vendors suddenly and globally discontinued the consumer-grade GPU model that was powering this configuration. They don’t have plans to bring back anything comparable, so that configuration had to be pulled from the catalog, unfortunately.<br><br>On a more positive note, a significant and exciting catalog refresh is coming up, and will be announced soon. Stay tuned! 🤫</p><hr><p>As usual, we want to sincerely thank every one of you, Sherlock users, for your patience when things break, your extraordinary motivation and your continuous support. We’re proud of supporting your amazing work, and Sherlock simply wouldn’t exist without you.<br><br>Happy computing and don’t hesitate to&nbsp;<a href="mailto:[email protected]" rel="noopener" target="_blank">reach out</a> if you have any questions!</p>Kilian Cavalotti[email protected]urn:noticeable:publications:P3xY1hwDWMe8tR48vPEj2021-02-05T18:20:00Z2021-02-05T20:10:21.673ZTracking NFS problems down to the SFP levelWhen NFS problems turn out to be... not NFS problems at all.<blockquote><p><em>This is part of our </em><a href="https://news.sherlock.stanford.edu/labels/blog?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock blog series">technical blog series</a><em> about things that happen behind-the-scenes on Sherlock, and which are part of our ongoing effort to keep it up and running in the best possible conditions for our beloved users.</em></p></blockquote><p><strong>For quite a long time, we've been chasing down an annoying </strong><a href="https://en.wikipedia.org/wiki/Network_File_System?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="NFS"><strong>NFS</strong></a><strong> timeout issue that seemed to only affect </strong><a href="https://news.sherlock.stanford.edu/posts/sherlock-3-0-is-here?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Sherlock 3.0"><strong>Sherlock 3.0</strong></a><strong> nodes.</strong></p><p>That issue would impact both login and compute nodes, both NFSv4 user mounts (like <code><a href="https://www.sherlock.stanford.edu/docs/storage/filesystems/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage#home" rel="noopener nofollow" target="_blank" title="$HOME">$HOME</a></code> and <code><a href="https://www.sherlock.stanford.edu/docs/storage/filesystems/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage#group_home" rel="noopener nofollow" target="_blank" title="$GROUP_HOME">$GROUP_HOME</a></code>) and NFSv3 system-level mounts (like the one providing <a href="https://www.sherlock.stanford.edu/docs/software/list/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="software">software installations</a>), and occur at random times, on random nodes. It was not widespread enough to be causing real damage, but from time to time, a NFS mount would hang and block I/O for a job, or freeze a login session. When that happened, the node would still be able to ping all of the NFS servers' IP addresses, even remount the same NFS file system with the exact same options in another mount point, and no discernable network issue was apparent on the nodes. Sometimes, the stuck mounts would come back to life on their own, sometimes they would stay hanging forever.</p><h2>Is it load? Is it the kernel? Is it the CPU?</h2><p>It kind of looked like it could be correlated with <a href="https://en.wikipedia.org/wiki/Load_(computing)?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="load">load</a>, and mostly appear when multiple jobs were doing NFS I/O on a given node, but we never found conclusive proof that it was the case. The only distinguishable element was that the issue was only observed on Sherlock 3.0 nodes and never affected older Sherlock 1.0/2.0 nodes. So we started suspecting something about the kernel NFS client, maybe some oddity with AMD Rome CPUs: after all, they were all quite new, and the nodes had many more cores than the previous generation. So maybe they had more trouble handling the parallel operations, ended up with a deadlock or something.</p><p>But still, all the Sherlock nodes are using the same kernel, and only the Sherlock 3.0 nodes were affected, so it appeared unlikely to be a kernel issue. </p><h2>The NFS servers maybe?</h2><p>We then started looking at the NFS servers. Last December’s maintenance was actually an attempt at resolving those timeout issues, even though it proved fruitless in that aspect. We got in touch with vendor support to explore possible explanations, but nothing came out of it and our support case went nowhere. Plus, if the NFS servers were at fault, it would likely have affected all Sherlock nodes, not just a subset.</p><h2>It’s the NFS client parameters! Or is it?</h2><p>So back to the NFS client, we've started looking at the NFS client mount parameters. The <a href="https://www.google.com/search?q=nfs+timeout&amp;&amp;utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">petazillion web hits</a> about "nfs timeout" didn't really help in that matter, but in the process we found pretty interesting <a href="https://lore.kernel.org/linux-nfs/[email protected]/T/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">discussions</a> about read/write sizes and read-ahead. We tried tweaking all of those parameters left and right, deployed various configs on the compute nodes (A/B testing FTW!), but the timeout still happened.</p><h2>The lead</h2><p>In the end, what gave us a promising lead was an <a href="https://blog.noc.grnet.gr/2018/08/29/a-performance-story-how-a-faulty-qsfp-crippled-a-whole-ceph-cluster/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">article</a> found on the <a href="https://grnet.gr/en/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">GRNET</a> <a href="https://blog.noc.grnet.gr/?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">blog</a> that explain how the authors tracked down a defective <a href="https://en.wikipedia.org/wiki/Small_form-factor_pluggable_transceiver?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="QSFP">QSFP</a> that was causing issues in their <a href="https://en.wikipedia.org/wiki/Ceph_(software)?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="Ceph">Ceph</a> cluster. Well, it didn't take long to realize that there was a similar issue between those Sherlock nodes and the NFS servers. Packet loss was definitely involved.</p><p>The tricky part, as described in the blog post, is that the packet loss only manifested itself when using large <a href="https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">ICMP</a> packets, close to the <a href="https://en.wikipedia.org/wiki/Maximum_transmission_unit?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">MTU</a> upper limit. When using regular packet size, no problem was apparent.</p><p>For instance, this regular ping didn't show any loss:</p><pre><code># ping -c 50 10.16.90.1 | grep loss 50 packets transmitted, 50 received, 0% packet loss, time 538ms</code></pre><p>But when cranking up the packet size:</p><pre><code># ping -s 8972 -c 50 10.16.90.1 | grep loss 50 packets transmitted, 36 received, 28% packet loss, time 539ms</code></pre><p>What was even funnier is that not all Sherlock 3.0 nodes were experiencing loss to the same NFS server nodes. For instance, from one client node , there was packet loss to just one of the NFS servers:</p><pre><code>client1# clush -Lw 10.16.90.[1-8] --worker=exec ping -s 8972 -M do -c 10 -q %h | grep loss 10.16.90.1: 10 packets transmitted, 10 received, 0% packet loss, time 195ms 10.16.90.2: 10 packets transmitted, 8 received, 20% packet loss, time 260ms 10.16.90.3: 10 packets transmitted, 10 received, 0% packet loss, time 193ms 10.16.90.4: 10 packets transmitted, 10 received, 0% packet loss, time 260ms 10.16.90.5: 10 packets transmitted, 10 received, 0% packet loss, time 200ms 10.16.90.6: 10 packets transmitted, 10 received, 0% packet loss, time 264ms 10.16.90.7: 10 packets transmitted, 10 received, 0% packet loss, time 196ms 10.16.90.8: 10 packets transmitted, 10 received, 0% packet loss, time 194ms</code></pre><p>But from another client, sitting right next to it, no loss to that server , but packets dropped to another one instead:</p><pre><code>client2# clush -Lw 10.16.90.[1-8] --worker=exec ping -s 8972 -M do -c 10 -q %h | grep loss 10.16.90.1: 10 packets transmitted, 8 received, 20% packet loss, time 190ms 10.16.90.2: 10 packets transmitted, 10 received, 0% packet loss, time 198ms 10.16.90.3: 10 packets transmitted, 10 received, 0% packet loss, time 210ms 10.16.90.4: 10 packets transmitted, 10 received, 0% packet loss, time 197ms 10.16.90.5: 10 packets transmitted, 10 received, 0% packet loss, time 196ms 10.16.90.6: 10 packets transmitted, 10 received, 0% packet loss, time 243ms 10.16.90.7: 10 packets transmitted, 10 received, 0% packet loss, time 201ms 10.16.90.8: 10 packets transmitted, 10 received, 0% packet loss, time 213ms</code></pre><h2>The link</h2><p>That all started to sound like a faulty stack link, or a a problem in one of the <a href="https://en.wikipedia.org/wiki/Link_aggregation?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage#Link_Aggregation_Control_Protocol" rel="noopener nofollow" target="_blank" title="LACP">LACP</a> links between the different switch stacks (Sherlock's and the NFS servers’). We didn't find anything obviously out-of-place in reviewing the switches configuration, so we went back to the switches’ documentation to try to understand how to check counters and identify bad links (which gave us the opportunity to mumble about documentation that is not in sync with actual commands, but that’s another topic...).</p><p>So we dumped the hardware counters for each link involved in the NFS connections, and on a switch, on the NFS client’s side, there was this:</p><pre><code>te1/45 Ingress FCSDrops : 0 te1/46 Ingress FCSDrops : 0 te2-45 Ingress FCSDrops : 0 te2-46 Ingress FCSDrops : 0 te3-45 Ingress FCSDrops : 0 te3-46 Ingress FCSDrops : 1064263014 te4-45 Ingress FCSDrops : 0 te4-46 Ingress FCSDrops : 0</code></pre><p>Something standing out, maybe?</p><p>In more details:</p><pre><code>#show interfaces te3/46 TenGigabitEthernet 3/46 is up, line protocol is up Port is part of Port-channel 98 [...] Input Statistics: 18533249104 packets, 35813681434965 bytes [...] 1064299255 CRC, 0 overrun, 0 discarded</code></pre><p>The CRC number indicates the number of CRC <em>failures</em>, packets which failed checksum validation. All the other ports on the switch were at 0. So clearly something was off with that port. </p><h2>The culprit: a faulty SFP!</h2><p>We decided to try to shut that port down (after all, it's just 1 port out of a 8-port LACP link), and immediately, all the packet loss disappeared.</p><p>So we replaced the the optical transceiver in that port, hoping that swapping that SFP would resolve the CRC failure problem. After re-enabling the link, the number of dropped packets seemed to have decreased. But not totally disappear…</p><h2>The <em>real</em> culprit: the <em>other</em> SFP</h2><p>Thinking a little more about it, since the errors were actually <strong>Ingress</strong> FCSDrops on the switch, it didn’t seem completely unreasonable to consider that those frames were received by the switch already corrupted, and thus, that they would have been mangled by either the transceiver on the other end of the link, or maybe in-flight by a damaged cable. So maybe we’ve been pointing fingers at a SFP, and maybe it was innocent… 😁<br><br>We checked the switch’s port on the NFS server’s side, and the checksum errors and drop counts were all at 0. We replaced that SFP anyway, just to see, and this time, bingo: no more CRC errors on the other side. </p><p>Which lead us to the following decision tree:</p><ul><li><p>if a port has RX/receiving/ingress errors, it’s probably <strong>not</strong> its fault, and the issue is most likely with its peer at the other end of the link,</p></li><li><p>if a port has TX/transmitting/egress errors, it’s probably the source of the problem,</p></li><li><p>if both ports at each end of a given link have errors, the cable is probably at fault.</p></li></ul><p>By the way, if you’re wondering, here’s what a SFP looks like:<br></p><figure><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/P3xY1hwDWMe8tR48vPEj/01h55ta3gs1drsabkq2fschedq-image.jpg" alt="" loading="lazy" title=""></figure><p></p><h1>TL;DR</h1><p><strong>We had seemingly random NFS timeout issues. They turned out to be caused by a defective SFP, that was eventually identified through the port error counter of the switch at the other end of the link.</strong></p><p>There's probably a lesson to be learned here, and we were almost disappointed that DNS was not involved (because <a href="https://isitdns.com?utm_source=noticeable&amp;utm_campaign=sherlock.tracking-nfs-problems-down-to-the-sfp-level&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.P3xY1hwDWMe8tR48vPEj&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank" title="it's always DNS">it's always DNS</a>), but in the end, we were glad to finally find a rational explanation to those timeouts. And since that SFP replacement, not a single NFS timeout has been logged.<br><br></p>Kilian Cavalotti[email protected]urn:noticeable:publications:NGxi6lYLPRYFL9aZSN8O2020-11-05T01:49:00.001Z2020-11-05T02:26:57.373ZSH3_G4FP32 nodes are back in the catalog!A new GPU option is available in the Sherlock catalog... again! After a period of unavailability and a transition between GPU generations, where previous models were retired while new ones were not available yet, we're pleased to...<p><strong>A new GPU option is available in the <a href="https://www.sherlock.stanford.edu/catalog?utm_source=noticeable&amp;utm_campaign=sherlock.sh-3-g-4-fp-32-nodes-are-back-in-the-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.NGxi6lYLPRYFL9aZSN8O&amp;utm_medium=newspage" target="_blank" rel="noopener">Sherlock catalog</a>… again!</strong></p> <p>After a period of unavailability and a transition between GPU generations, where previous models were retired while new ones were not available yet, we’re pleased to announce that the entry-level GPU node configuration is now back in the catalog. With a vengeance!</p> <p>Built around the same platform as the previous <code>SH3_G4FP32</code> generation, the new <strong><code>SH3_G4FP32.1</code></strong> model features:</p> <ul> <li>32 CPU cores</li> <li>256 GB of memory</li> <li>2TB of local NVMe scratch space</li> <li>4x <a href="https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3090/?utm_source=noticeable&amp;utm_campaign=sherlock.sh-3-g-4-fp-32-nodes-are-back-in-the-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.NGxi6lYLPRYFL9aZSN8O&amp;utm_medium=newspage" target="_blank" rel="noopener">GeForce RTX 3090</a> GPUs, each featuring 24GB of GPU memory</li> <li>a 200GB/s Infiniband HDR interface</li> </ul> <p><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/NGxi6lYLPRYFL9aZSN8O/01h55ta3gsa6gy01b3kh67raaf-image.png" alt="rtx3090.png"></p> <p>Particularly well-suited for applications that don’t require full double-precision computations (FP64), the top-of-the-line RTX 3090 GPU is based on the latest NVIDIA <a href="https://www.nvidia.com/en-us/data-center/nvidia-ampere-gpu-architecture/?utm_source=noticeable&amp;utm_campaign=sherlock.sh-3-g-4-fp-32-nodes-are-back-in-the-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.NGxi6lYLPRYFL9aZSN8O&amp;utm_medium=newspage" target="_blank" rel="noopener">Ampere</a> architecture and provides what’s probably the best performance/cost ratio on the market today for those use cases, and delivers almost twice the performance of the previous generations on many ML/AI workloads, as well as a significant boost for Molecular Dynamics and CryoEM applications.</p> <p>For more details and pricing, please check out the <a href="https://www.sherlock.stanford.edu/catalog?utm_source=noticeable&amp;utm_campaign=sherlock.sh-3-g-4-fp-32-nodes-are-back-in-the-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.NGxi6lYLPRYFL9aZSN8O&amp;utm_medium=newspage" target="_blank" rel="noopener">Sherlock catalog</a> <em>(SUNet ID required)</em>, and if you’re interested in purchasing your own compute nodes for Sherlock, the new <code>SH3_G4FP32.1</code> configuration is available for purchase today, and can be ordered online though the <a href="https://www.sherlock.stanford.edu/order?utm_source=noticeable&amp;utm_campaign=sherlock.sh-3-g-4-fp-32-nodes-are-back-in-the-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.NGxi6lYLPRYFL9aZSN8O&amp;utm_medium=newspage" target="_blank" rel="noopener">Sherlock order form</a> <em>(SUNet ID required)</em>.</p> Kilian Cavalotti[email protected]urn:noticeable:publications:pQO6ll118TRDHxHxfmj12020-09-18T18:00:00.001Z2020-09-18T22:53:40.922ZNew GPU options in the Sherlock catalogToday, we're introducing the latest generation of GPU accelerators in the Sherlock catalog: the NVIDIA A100 Tensor Core GPU. Each A100 GPU features 9.7 TFlops of double-precision (FP64) performance, up to 312 TFlops for deep-learning...<p>Today, we’re introducing the latest generation of GPU accelerators in the Sherlock catalog: the <a href="https://www.nvidia.com/en-us/data-center/a100/?utm_source=noticeable&amp;utm_campaign=sherlock.new-gpu-options-in-the-sherlock-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.pQO6ll118TRDHxHxfmj1&amp;utm_medium=newspage" target="_blank" rel="noopener">NVIDIA A100 Tensor Core GPU</a>.</p> <p><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/pQO6ll118TRDHxHxfmj1/01h55ta3gsm3jne0v3cpprnkn5-image.jpg" alt="ampere-a100.jpg"></p> <p>Each A100 GPU features <strong>9.7 TFlops</strong> of double-precision (FP64) performance, up to <strong>312 TFlops</strong> for deep-learning applications, <strong>40GB</strong> of HBM2 memory, and <strong>600GB/s</strong> of interconnect bandwidth with 3rd generation <strong>NVLink</strong> connections<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p> <h2>New Sherlock Catalog options</h2> <p>Targeting the most demanding HPC and DL/AI workloads, the three new GPU node options we’re introducing today should cover the most extreme computing needs:</p> <ul> <li>a refreshed version of the <code>SH3_G4FP64.1</code> configuration features 32x CPU cores, 256GB of memory and 4x A100 PCIe GPUs</li> <li>the new <code>SH3_G4TF64</code> model features 64 CPU cores, 512GB of RAM, and 4x A100 SXM4 GPUs (NVLink)</li> <li>and the most powerful configuration, <code>SH3_G8TF64</code> , comes with 128 CPU cores, 1TB of RAM, 8x A100 SXM4 GPUs (NVLink) and <em>two</em> Infiniband HDR HCAs for a whopping 400Gb/s of interconnect bandwidth to keep those GPUs busy</li> </ul> <p>You’ll find all the details in the <a href="http://www.sherlock.stanford.edu/docs/overview/orders/catalog?utm_source=noticeable&amp;utm_campaign=sherlock.new-gpu-options-in-the-sherlock-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.pQO6ll118TRDHxHxfmj1&amp;utm_medium=newspage" target="_blank" rel="noopener"><strong>Sherlock catalog</strong></a> <em>(SUNet ID required)</em>.</p> <p>All those configuration are available for order today, and can be ordered online though the Sherlock <a href="http://www.sherlock.stanford.edu/docs/overview/orders/form?utm_source=noticeable&amp;utm_campaign=sherlock.new-gpu-options-in-the-sherlock-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.pQO6ll118TRDHxHxfmj1&amp;utm_medium=newspage" target="_blank" rel="noopener">order form</a> <em>(SUNet ID required)</em>.</p> <h2>Other models’ availability</h2> <p>We’re working on bringing a replacement for the entry-level <code>SH3_G4FP32</code> model back in the catalog as soon as possible. We’re unfortunately dependent on GPU availability, as well as on the adaptations required for server vendors to accommodate the latest generation of consumer-grade GPUs. We’re expecting a replacement configuration in the same price range to be available by the end of the calendar year.</p> <p>As usual, please don’t hesitate to <a href="mailto:[email protected]" target="_blank" rel="noopener">reach out</a> if you have any questions!</p> <hr class="footnotes-sep"> <section class="footnotes"> <ol class="footnotes-list"> <li id="fn1" class="footnote-item"><p>In-depth technical details are available in the <a href="https://developer.nvidia.com/blog/nvidia-ampere-architecture-in-depth?utm_source=noticeable&amp;utm_campaign=sherlock.new-gpu-options-in-the-sherlock-catalog&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.pQO6ll118TRDHxHxfmj1&amp;utm_medium=newspage" target="_blank" rel="noopener">NVIDIA Developer blog</a> <a href="#fnref1" class="footnote-backref">↩</a></p> </li> </ol> </section> Kilian Cavalotti[email protected]urn:noticeable:publications:GiqpTJFx844GaHTJX1kP2020-08-20T00:42:00.001Z2020-08-20T00:44:03.173ZSherlock 3.0 is here!It's been a long, long, way too long of a wait, but despite a global pandemic, heatwaves, thunderstorms, power shutoffs, fires and smoke, it's finally here! Today, we're very excited to announce the immediate availability of Sherlock 3...<p>It’s been a long, long, way too long of a wait, but despite a global pandemic, heatwaves, thunderstorms, power shutoffs, fires and smoke, it’s finally here!</p> <p><strong>Today, we’re very excited to announce the immediate availability of <em>Sherlock 3.0</em>, the third generation of the Sherlock cluster.</strong></p> <h2>What is Sherlock 3.0?</h2> <p>First, let’s take a quick step back for context.</p> <p>The Sherlock cluster is built around core Infiniband fabrics, which connect compute nodes together and allow them to work as a single entity. As we expand Sherlock over time, more compute nodes are added to the cluster, and when a core fabric reaches capacity, a new one needs to be spun up. This is usually a good opportunity to refresh the compute node hardware characteristics, as well as continue expanding and renewing ancillary equipment and services, such as login nodes, DTNs, storage systems, etc. The collection of compute and service nodes connected to the same Infiniband fabric constitutes a sort of island, or <em>generation</em>, that could live on its own, but is actually an integral part of the greater, unified Sherlock cluster.</p> <p>So far, since its inception in 2014, Sherlock has grown over two generations of nodes: the first one built around an FDR (56Gb/s) Infiniband fabric, and the second one, started in 2017, around an EDR (100Gb/s) fabric.</p> <p>Late last year, that last EDR fabric reached capacity, and after a long and multifactorial hiatus, today, we’re introducing the third generation of Sherlock, architectured around a new Infiniband fabric, and a completely refreshed compute node offering.</p> <h2>What does it look like?</h2> <p>Sherlock still looks like a bunch of black boxes with tiny lights, stuffed in racks 6ft high, and with an insane number of cables going everywhere.</p> <p>But in more technical details, Sherlock 3.0 features:</p> <ul> <li><p><strong>a new, faster interconnect | Infiniband HDR, 200Gb/s</strong><br> The new interconnect provides more bandwidth and lower latency to all the new nodes on Sherlock, for either inter-node communication in large parallel MPI applications, or for accessing the <code>$SCRATCH</code> and <code>$OAK</code> parallel file systems.<br> <em>Sherlock is one of the first HPC clusters in the world to provide 200Gb/s to the nodes.</em></p></li> <li><p><strong>new and faster processors | AMD 2nd generation EPYC (Rome) CPUs</strong><br> To take advantage of the doubled inter-node bandwidth, a brand new generation of CPUs was required, to provide enough internal bandwidth between the CPUs and the network interfaces. The <a href="https://www.amd.com/en/processors/epyc-7002-series?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage" target="_blank" rel="noopener">AMD Rome CPUs</a> are actually the first (and currently still the only) x86 CPU model to provide PCIe Gen4 connectivity, that enables faster local and remote I/O, and that can unlock 200Gb/s network speeds.<br> Those CPUs are also faster, draw less power, and provide more cores per socket than the ones found in the previous generations of Sherlock nodes, with a minimum of 32 CPU cores per node.</p></li> <li><p><strong>more (and faster) internal storage | 2TB NVMe per node</strong><br> Sherlock 3.0 nodes now each feature a minimum of 2TB of local NVMe storage (over 10x the previous amount), for applications that are particularly sensitive to IOPS rates.</p></li> <li><p><strong>refreshed <code>$HOME</code> storage</strong><br> More nodes means more computing power, but it also means more strain on the shared infrastructure. To absorb it, we’ve also refreshed and expanded the storage cluster that supports the <code>$HOME</code> and <code>$GROUP_HOME</code> storage spaces, to provide higher bandwidth, more IOPS, and better availability.</p></li> <li><p><strong>more (and faster) login and DTN nodes</strong><br> Sherlock 3.0 also feature 8 brand new login nodes, that are part of the <code>login.sherlock.stanford.edu</code> login pool, and each feature a pair of AMD 7502 CPUs (for a total of 64 cores) and 512 GB of RAM. As well as a new pair of dedicated <a href="https://www.sherlock.stanford.edu/docs/storage/data-transfer/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#data-transfer-nodes-dtns" target="_blank" rel="noopener">Data Transfer Nodes (DTNs)</a></p></li> <li><p><strong>refreshed and improved infrastructure</strong><br> The list would be too long to go through exhaustively, but between additional service nodes to better scale the distributed cluster management infrastructure, improved Ethernet topology between the racks, and a refreshed hardware framework for the job scheduler, all the aspects of Sherlock have been rethought and improved.</p></li> </ul> <h2>What does it change for me?</h2> <p>In terms of habits and workflows: nothing. You don’t have to change anything and can continue to use Sherlock exactly the way you’ve been using it so far.</p> <p>Sherlock is still a single cluster, with the same:</p> <ul> <li>single point of entry at <code>login.sherlock.stanford.edu</code>,</li> <li>single and ubiquitous data storage space (you can still access all of your data on all the file systems, from all the nodes in the cluster),</li> <li>single application stack (you can load the same module and run the same software on all Sherlock nodes).</li> </ul> <p>But it now features a third island, with a new family of compute nodes.</p> <p>One thing you’ll probably notice pretty quickly is that your pending times in queue for the <code>normal</code>, <code>bigmem</code> and <code>gpu</code> partitions have been dropping. Considerably.</p> <p>This is because, thanks to the generous sponsorship of the <a href="https://provost.stanford.edu?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage" target="_blank" rel="noopener">Stanford Provost</a>, we’ve been able to add the following resources to Sherlock’s public partitions:</p> <table> <thead> <tr><th>partition</th><th>#nodes</th><th>node specs</th></tr> </thead> <tbody> <tr><td><code>normal</code></td><td>72</td><td>32-core (1x <a href="https://www.amd.com/en/products/cpu/amd-epyc-7502?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#product-specs" target="_blank" rel="noopener">7502</a>) w/ 256GB RAM</td></tr> <tr><td><code>normal</code></td><td>2</td><td>128-core (2x <a href="https://www.amd.com/en/products/cpu/amd-epyc-7742?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#product-specs" target="_blank" rel="noopener">7742</a>) w/ 1TB RAM</td></tr> <tr><td><code>bigmem</code></td><td>1</td><td>64-core (2x <a href="https://www.amd.com/en/products/cpu/amd-epyc-7502?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#product-specs" target="_blank" rel="noopener">7502</a>) w/ 4TB RAM</td></tr> <tr><td><code>gpu</code></td><td>16</td><td>32-core (1x <a href="https://www.amd.com/en/products/cpu/amd-epyc-7502P?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#product-specs" target="_blank" rel="noopener">7502P</a>) w/ 256GB RAM and 4x <a href="https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2080-ti/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#specs" target="_blank" rel="noopener">RTX 2080 Ti</a> GPUs</td></tr> <tr><td><code>gpu</code></td><td>2</td><td>32-core (1x <a href="https://www.amd.com/en/products/cpu/amd-epyc-7502P?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#product-specs" target="_blank" rel="noopener">7502P</a>) w/ 256GB RAM and 4x <a href="https://www.nvidia.com/en-us/data-center/v100/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#specs" target="_blank" rel="noopener">V100S</a> GPUs</td></tr> <tr><td><strong>Total</strong></td><td><strong>93</strong></td><td><strong>3,200 cores, 30TB RAM, 72 GPUs</strong></td></tr> </tbody> </table> <p>Those new Sherlock 3.0 nodes are adding over twice the existing computing power available for free to every Sherlock user in the <code>normal</code>, <code>bigmem</code> and <code>gpu</code> partitions.</p> <h3>How can I use the new nodes?</h3> <p>It’s easy! You can keep submitting your jobs as usual, and the scheduler will automatically try to pick the new nodes that satisfy your request requirements if they’re available.</p> <p>If you want to target the new nodes specifically, take a look at the output of <code>sh_node_feat</code>: all the new nodes have features defined that allow the scheduler to specifically select them when your job requests particular constraints.</p> <p>For instance, if you want to select nodes:</p> <ul> <li>with HDR IB connectivity, you can use <code>-C IB:HDR</code></li> <li>with AMD Rome CPUs, you can use <code>-C CPU_GEN:RME</code></li> <li>with 7742 CPUs, you can use <code>-C CPU_SKU:7742</code></li> <li>with Turing GPUs, you can use <code>-C GPU_GEN:TUR</code></li> </ul> <h2>Can I get more of it?</h2> <p>Absolutely! And we’re ready to take orders today.</p> <p>If you’re interested in getting your own compute nodes on Sherlock, we’ve assembled a catalog of select configurations that you can choose from, and worked very hard with our vendors to maintain comparable price ranges with our previous generation offerings.</p> <p>You’ll find the detailed configuration and pricing in the <em>Sherlock Compute Nodes Catalog</em>, and we’ve also prepared an <em>Order Form</em> that you can use to provide the required information to purchase those nodes</p> <ul> <li><p><strong>Sherlock catalog</strong><br> <a href="http://www.sherlock.stanford.edu/docs/overview/orders/catalog?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage" target="_blank" rel="noopener">http://www.sherlock.stanford.edu/docs/overview/orders/catalog</a></p></li> <li><p><strong>Order form</strong><br> <a href="http://www.sherlock.stanford.edu/docs/overview/orders/form?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage" target="_blank" rel="noopener">http://www.sherlock.stanford.edu/docs/overview/orders/form</a></p></li> </ul> <p>For complete details about the purchasing process, please take a look at<br> <a href="https://www.sherlock.stanford.edu/docs/overview/orders/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage" target="_blank" rel="noopener">https://www.sherlock.stanford.edu/docs/overview/orders/</a> and as usual,<br> please let us know if you have any questions.</p> <hr> <p>Finally, we wanted to sincerely thank every one of you for your patience while we were working on bringing up this new cluster generation, in an unexpectedly complicated global context. We know it’s been a very long wait, but hopefully it will have been worthwhile.</p> <p>Happy computing and don’t hesitate to <a href="mailto:[email protected]" target="_blank" rel="noopener">reach out</a>!</p> <p><em>Oh, and <a href="https://www.sherlock.stanford.edu/docs/overview/introduction/?utm_source=noticeable&amp;utm_campaign=sherlock.sherlock-3-0-is-here&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.GiqpTJFx844GaHTJX1kP&amp;utm_medium=newspage#user-community" target="_blank" rel="noopener">Sherlock is on Slack now</a>, so feel free to come join us there too!</em></p> Kilian Cavalotti[email protected]urn:noticeable:publications:VMnlU6zZGRceQom9u1Wh2019-12-03T23:30:00.001Z2019-12-04T21:49:36.010ZAdventures in storage_This is part of our blog series about behind-the-scenes things we do on a regular basis on Sherlock, to keep it up and running in the best possible conditions for our users. Now that Sherlock's old storage system has been retired, we...<blockquote> <p><em>This is part of our blog series about behind-the-scenes things we do on a regular basis on Sherlock, to keep it up and running in the best possible conditions for our users.<br> Now that <a href="https://news.sherlock.stanford.edu/posts/a-new-scratch-is-here?utm_source=noticeable&amp;utm_campaign=sherlock.adventures-in-storage&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VMnlU6zZGRceQom9u1Wh&amp;utm_medium=newspage" target="_blank" rel="noopener">Sherlock’s old storage system has been retired</a>, we can finally tell that story. It all happened in 2016.</em></p> </blockquote> <p>Or: <em>How we replaced more than 1 PB of hard drives, while continuing to serve files to unsuspecting users.</em></p> <p><strong>TL;DR:</strong> The parallel filesystem in <a href="//www.sherlock.stanford.edu" target="_blank" rel="noopener">Stanford’s largest HPC cluster</a> has been affected by frequent and repeated hard-drive failures since its early days. A defect was identified that affected all of the 360 disks used in 6 different disk arrays. A major swap operation was planned to replace the defective drives. Multiple hardware disasters piled up to make matters worse, but in the end, all of the initial disks were replaced, while retaining 1.5 PB of user data intact, and keeping the filesystem online the whole time.</p> <h2>History and context</h2> <p><em>Once upon a time, in a not so far away datacenter…</em></p> <p>We, <a href="srcc.stanford.edu" target="_blank" rel="noopener">Stanford Research Computing Center</a>, manage many high-performance computing and storage systems at Stanford. In 2013, in a effort to centralize resources and advance computational research, a new HPC cluster, <a href="//www.sherlock.stanford.edu" target="_blank" rel="noopener">Sherlock</a>, has been deployed. To provide best-in-class computing resources to all faculty and facilitate research in all fields, this campus-wide cluster features a high-performance, <a href="http://lustre.org?utm_source=noticeable&amp;utm_campaign=sherlock.adventures-in-storage&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VMnlU6zZGRceQom9u1Wh&amp;utm_medium=newspage" target="_blank" rel="noopener">Lustre</a>-based parallel filesystem.</p> <p>This filesystem, called <code>/scratch</code>, was designed to provide high-performance storage for temporary files during simulations. Initially made of three I/O cells, the filesystem had been designed to be easily expanded with more hardware as demand and utilization grew. Each I/O cell was comprised of:</p> <ul> <li>2x object storage servers,</li> <li>2x disk arrays, with: <ul> <li>dual RAID controllers,</li> <li>5 drawers of 12 disks each,</li> <li>60 4TB SAS disks total.</li> </ul></li> </ul> <p><img src="https://storage.noticeable.io/projects/bYyIewUV308AvkMztxix/publications/VMnlU6zZGRceQom9u1Wh/01h55ta3gs0cjq7j0mcby72khd-image.jpg" alt="MD3260"></p> <p>Each disk array was configured with 6x 10-disk RAID6 LUNs, and every SAS path being redundant, the two OSS servers could act as a high-availability pair. This is a pretty common Lustre setup.</p> <p>Close to a petabyte in size, this filesystem quickly became the go-to solution for many researchers who didn’t really have any other option to store and compute against their often large data sets. Over time, the filesystem was expanded several times and eventually more than doubled in size:</p> <table> <thead> <tr><th></th><th style="text-align:right"># disk arrays</th><th style="text-align:right"># OSTs</th><th style="text-align:right"># disks</th><th style="text-align:right">size</th></tr> </thead> <tbody> <tr><td><strong>initially</strong></td><td style="text-align:right">6</td><td style="text-align:right">36</td><td style="text-align:right">360</td><td style="text-align:right">1.1 PB</td></tr> <tr><td><strong>ultimately</strong></td><td style="text-align:right">18</td><td style="text-align:right">108</td><td style="text-align:right">1080</td><td style="text-align:right">3.4 PB</td></tr> </tbody> </table> <p>As the filesystem grew, it ended up containing close to 380 million inodes (that is, filesystem entries, like files, directories or links). Please keep that in mind, turns out that’s an important factor for the following events.</p> <h2>The initial issue</h2> <p>All was fine and dandy in storage land, and we had our share of failing disks, as everybody. We were replacing them as they failed, sending them back to our vendor, and getting new ones in return. Datacenter business as usual.</p> <p>Except, a lot of disks were failing. Like, really <em>a lot</em>, as in one every other day.</p> <p>We eventually came to the conclusion that our system had been installed with a batch of disks with shorter-than-average lifespans. They were all from the same disk vendor, manufactured around the same date. But we didn’t worry too much.</p> <p>Until that day, where 2 disks failed within 3 hours of each other. In the same disk array. <strong>In. The. Same. <a href="https://en.wikipedia.org/wiki/Logical_unit_number?utm_source=noticeable&amp;utm_campaign=sherlock.adventures-in-storage&amp;utm_content=publication+link&amp;utm_id=bYyIewUV308AvkMztxix.GtmOI32wuOUPBTrHaeki.VMnlU6zZGRceQom9u1Wh&amp;utm_medium=newspage" target="_blank" rel="noopener">LUN</a>.</strong></p> <p>To give some context, <strong>one</strong> failed drive in a 10-disk RAID6 array is no big deal: data can be reconstructed from the 9 remaining physical disks without any problem. If by any chance one of those remaining disks suffers from a problem and data cannot be read from it, there are still enough redundancy to reconstruct the missing data and all is well.<img src="http://www.dcig.com/wp-content/uploads/images/Blog_RAID6.jpg" alt="RAID6 8+2"></p> <p>A single drive failure is handled quite transparently by the disk array:</p> <ul> <li>it emits an alert,</li> <li>you replace the failed disk,</li> <li>it detects the drive has been replaced,</li> <li>it starts rebuilding it from data and parity on the other disks of the LUN,</li> <li>about 24 hours later, you have a brand new LUN, all shiny and happy again.</li> </ul> <p>But <strong>two</strong> failed disks, on the other hand, that’s pretty much like a Russian roulette session: you may be lucky and pull it off, but there’s a good chance you won’t. While the LUN misses 2 disks, there is no redundancy left to reconstruct the data. Meaning that any read error on any of the remaining 8 disks will lead to data loss as the controller won’t be able to reconstruct anything. And worse, any bit flip during reads will go completely unnoticed, as there is no parity left to check the data. Which means that you can potentially be reconstructing completely random garbage on your drives.</p> <p>Given that, it didn’t take us long to pick up the phone and call our vendor.</p> <p>They confirmed our initial findings that in our initial set of 6 disk arrays, over the course of 2 years, we had already replaced about 60 disks out of 360. At a rate of 5-10 failures per month. Way higher than expected.</p> <p>The LUN rebuild eventually completed fine, without any problem, but that double-failure acted as a serious warning. So we stated thinking about ways to solve our problem. And that’s when the sticky cheese hit the fan…</p> <h3>When problems pile up</h3> <p>Three days after the double failure, we had an even more important hardware event: one drawer in another disk array misbehaved, reporting itself as degraded, and 6 disks failed in that same drawer over the course of a few minutes. A 7th disk was evicted a few hours later, and left 2 LUNs without any parity in that single array. Joy all over. In a few minutes, the situation we were dreading a few days earlier just happened twice in the same array. We were a disk away from loosing serious amounts of data (we’re talking 30TB per LUN). And as past experience proved, those disks were not of the most reliable kind…</p> <p>We got our vendor to dispatch a replacement drawer to us under the terms of our H+4 support contract. Except they didn’t have any replacement drawer in stock that they could get to us in 4 hours. So they overnight’d it and we got the replacement drawer the following day.</p> <p>We diligently replaced the drawer and rebuild started on those 7 drives in the disk array. Which, yes, means that one LUN was rebuilding without any redundancy. Like the one from the other disk array the week before. And as everyone probably guessed, things didn’t go that well the second time: that LUN stayed degraded, despite all the rebuild operations being done and all the physical disks state being "optimal". Turned out the interface and the internal controller state disagreed on the status of a drive. On our vendor’s suggestion, we replaced that drive, a new rebuild started, and then abruptly stopped mid-course: the state of the LUN was still "degraded".</p> <p>And then, we had the sensible yet completely foolish idea of calling vendor support on a week-end.</p> <p>Hilarity and data loss ensued.</p> <h3>Never trust your hardware vendor support on week-ends</h3> <p>We were in a situation were a LUN was degraded, and a recently failed drive had just failed to rebuild, yet was showing up as “optimal” in the management interface. The vendor support technician then had the brilliant idea of forcefully “reviving” that drive. Which had the immediate effect of putting back online a drive that had been partially reconstructed, <em>ie.</em> on which 100% of the data had to be considered bit waste.<br> And the LUN stayed in that state, serving ridiculously out-of-sync, inaccurate and pretty much random data to our Lustre OSS servers for about 15 minutes. Fifteen minutes. Nine hundred full-size seconds. A lot of bad things can (and did) happen in 900 seconds.</p> <p>Luckily, the Lustre filesystem quickly realized it was lied to, so it did the only sane thing to do, blocked all I/O and set that device read-only. Of course, some filesystem-level corruption happened during the process.</p> <p>We had to bring that storage target down and check it multiple time with <code>fsck</code> to restore its data structure consistency. About 1,500 corrupted entries where found, detached from the local filesystem map and stored in the <code>lost+found</code> directory. That means that all those 1,500 objects, which were previously part of files, where now orphaned from the filesystem, as it had no way of knowing what file the belonged too anymore. So it tossed them in <code>lost+found</code> as it couldn’t do much else with them.</p> <p>And on our cluster, users trying to access those files were kindly greeted with an error message, which, as error messages sometimes are, was unintuitively related to the matter at hand: <code>cannot allocate memory</code>.</p> <p>With (much better) support from our filesystem vendor, we were able to recover a vast majority of those 1,500 files, and re-attach them to the filesystem, where they originally were. For Lustre admins, the magic word here is <code>ll_recover_lost_found_objs</code>.</p> <p>So in the end, we “only” lost 29 files in the battle. We contacted each one of the owners to let them know about the tragic fate of their files, and most of them barely flinched, their typical response being: "Oh yeah, I know that’s temporary storage anyway, let me upload a new copy of that file from my local machine".</p> <p>We know, we’re blessed with terrific users.</p> <h2>The tablecloth trick</h2> <p>Now, this was just starters, we hadn’t really had a chance to tackle the real issue yet. We were merely absorbing the fallout of that initial drawer failure, but we hadn’t done anything to address the high failure rate of our disk drives.</p> <p>Our hardware vendor, well aware of the underlying reliability issue, as the same scenario happened other places too, kindly agreed to replace all of our remaining original disks. That is, about 300 of them:</p> <table> <thead> <tr><th style="text-align:right">disk array</th><th style="text-align:right">already HDDs</th><th style="text-align:right">total HDDs</th><th style="text-align:right">HDDs to replace</th></tr> </thead> <tbody> <tr><td style="text-align:right">DA00</td><td style="text-align:right">16</td><td style="text-align:right">60</td><td style="text-align:right">44</td></tr> <tr><td style="text-align:right">DA01</td><td style="text-align:right">15</td><td style="text-align:right">60</td><td style="text-align:right">45</td></tr> <tr><td style="text-align:right">DA02</td><td style="text-align:right">14</td><td style="text-align:right">60</td><td style="text-align:right">46</td></tr> <tr><td style="text-align:right">DA03</td><td style="text-align:right">13</td><td style="text-align:right">60</td><td style="text-align:right">47</td></tr> <tr><td style="text-align:right">DA04</td><td style="text-align:right">8</td><td style="text-align:right">60</td><td style="text-align:right">52</td></tr> <tr><td style="text-align:right">DA05</td><td style="text-align:right">15</td><td style="text-align:right">60</td><td style="text-align:right">45</td></tr> <tr><td style="text-align:right"><strong>total</strong></td><td style="text-align:right"><strong>81</strong></td><td style="text-align:right"><strong>360</strong></td><td style="text-align:right"><strong>279</strong></td></tr> </tbody> </table> <p>The strategy devised by that same vendor was:</p> <blockquote> <p>"We’ll send you a whole new disk array, filled with new disks, and you’ll replicate your existing data there".</p> </blockquote> <p>To which we replied:</p> <blockquote> <p>“Uh, sorry, that’s won’t work. You see, those arrays are part of a larger Lustre filesystem, we can’t really replicate data from one to another without a downtime. And we would need a downtime long enough to allow us to copy 240TB of data. Six times, 'cause you know, we have six arrays. Oh, and our users don’t like downtimes.”</p> </blockquote> <p>So we had to find another way.</p> <p>Our preference was to minimize manipulations on the filesystem and keep it online as much as possible during this big disk replacement operation. So we leaned toward the path of least resistance, and let the RAID controllers do what they do best: compute parities and write data. So we ended up removing each one of those bad disks, one at a time, replacing it with a new disk, and let the controller rebuild the LUN.</p> <p>Each rebuild operation took about 24 hours, so obviously, replacing ~300 disks one at a time wasn’t such a thrilling idea: assuming somebody would be around 24/7 to swap a new drive as soon as the previous one finished, that would make the whole operation last almost a full year. Not very practical.</p> <p>So we settled on doing them in batches, replacing one disk in each of the 36 LUNs in each batch. That would allow the RAID controllers to rebuild several LUNs in parallel, and cut the overall length of the operation. Instead of 300 sequential 24-hours rebuilds, we would only need 5 waves of disk replacements, which shouldn’t take more than a couple weeks total.</p> <p>Should we mention the fact that our adored vendor mentioned that, since we were using RAID6, if we wanted to speed things even more, we could potentially consider replacing two drives at a time in each LUN, but that they wouldn’t recommend it? Nah, right, we shouldn’t.</p> <h3>Remove the disks, keep the data</h3> <p>So they went away and shipped us new disks. That’s where the “tablecloth trick” analogy is fully realized: we were indeed removing disk drives from our filesystem, while keeping the data intact, and inserting new disks underneath to replace them. Which would really be like pulling the tablecloth, putting a new one in place, and keeping the dishes intact.</p> <p><img src="http://67.media.tumblr.com/8b26967a16e1cf8e193b02c86c29f2e0/tumblr_inline_o91qsbH6pq1raprkq_500.gif" alt="tablecloth"></p> <p>But you know, things never go as planned, and while we started replacing that first batch of disks, we realized that those unreliable drives? Well, they were really unreliable.</p> <h3>When things go south</h3> <p>No less than five additional disks failed during that same first wave of rebuilds. Four of them in the same array (<code>DA00</code>). To make things worse, in one of those LUNs, one additional disk failed during the rebuild and then, unreadable sectors were encountered on a 3rd disk. Which lead to data loss and a corrupted LUN.</p> <p>We contacted our vendor, which basically said: "LUN is lost, restore from backup". Ha ha! Of course, we have backups for a 3PB Lustre filesystem, and we can restore an individual OST without breaking complete havoc in the rest of the filesystem’s coherency. For some reason, our vendor support recommended to delete the LUN, recreate it, and let the Lustre file system re-populate data back. We are still trying to understand what they meant.</p> <p>On the bright side, they engaged our software vendor, to provide some more assistance at the filesystem level and devise a recovery strategy. We had one of our own rolling already, and it turned out it was about the same.</p> <h3>Relocating files</h3> <p>Since we still had access to the LUN, our approach was to migrate all the files out of that LUN as quickly as possible and relocate them on other OSTs in Lustre, re-initialize the LUN at the RAID level, and them reformat it and re-insert it in the filesystem. Or, more precisely:</p> <ol> <li>deactivate the OST on MDT to avoid new object creation,</li> <li>use <code>lfs_migrate</code> to relocate files out of that OST, using either Robinhood or the results of <code>lfs find</code> to identify files residing on that OST (the former can be out of date, the latter was quite slow),</li> <li>make sure the OST was empty (<code>lfs find</code> again),</li> <li>disable the OST on clients, so they didn’t use it anymore,</li> <li>reactivate the OST on the MDS to clear up orphaned objects (while the OST is disconnected from the MDT, file relocations are not synchronized to the OST, so objects are orphaned there and take up space unnecessarily),</li> <li>backup the OST configuration (so it could be recreated with the same parameters, including its index),</li> <li>reinitialize the LUN in the disk array, and retain its configuration (most importantly its WWID),</li> <li>reformat the OST with Lustre,</li> <li>restore the OST configuration (especially its index),</li> <li>reactivate the OST.</li> </ol> <p>What can go wrong in a 10-step procedure? Turns out, it kind of all stopped at step 1.</p> <h4>Making sure nobody writes files to a LUN anymore</h4> <p>In order to be able to migrate all the files from an OST, you need to make sure that nobody can write new files to it anymore. How could you empty an OST if new files keep being created on it?<br> There are several approaches to this, but it took us some tries to get it right where we wanted it to be.</p> <p>First, you can try to ‘deactivate’ the OST by making it read-only on the MDT. It means that users can still read the existing files on the OST, but the MDT won’t consider it for new file creations. Sounds great, except for one detail: when you do this, the OST is disconnected from the MDT, so inodes occupied by files that are being migrated are not reported as freed up to the MDT. The consequence is that the MDT still thinks that the inodes are in-use, and you end up in a de-synchronized state, with orphaned inodes on your OST. Not good.</p> <p>So you need, at some point, to reconnect your OST to the MDT. Except as soon as you do this, new files get created on it, and you need to deactivate the OST, migrate them again, and bam, new orphan inodes again. Back to square one.</p> <p>Another method is to mark the OST as "degraded", which is precisely designed to handle such cases: OST undergoing maintenance, or rebuilding RAIDs, during which period the OST shouldn’t be used to create new files. So, we went ahead and marked our OST as "degraded". Until we realized that files were still created on it. It turns out that this was because of some uneven usage in out OSTs (they were added to the filesystem over time, so they were not all filled at the same level): if there’s too much unbalanced utilization among OSTs, the Lustre QOS allocator will ignore the “degraded” flag on OSTs, and privilege trying to rebalance usage over obeying OST degradation flags.</p> <p>Our top-notch filesystem vendor support suggested an internal setting to set on the OST (<code>fail_loc=0x229</code>, don’t try this at home) to artificially mark the OST as "out-of-space", which would carry both benefits of leaving it connected to the MDT for inodes cleanup, and prevent new files creation there. Unfortunately, this setting had the unexpected side effect of making load spike on the MDS, practically rendering the whole filesystem unsuable.</p> <p>So we ended up deciding to temporarily sacrifice good load balancing across OSTs, and disabled the QOS allocator. This allowed us to mark our OST as "degraded", keep it connected to the MDT so inodes associated with migrated files would effectively be cleaned, while preventing new file creation. This worked great.</p> <p><img src="https://cloud.githubusercontent.com/assets/186807/17631228/14e610e8-6078-11e6-814d-f874d07ef1ff.png" alt="lfs_migrates"></p> <p>We let our migration complete, and at the end both OSTs were completely empty, devoid of any file.</p> <h3>Zombie LUN</h3> <p><em>Because any good story needs zombies.</em></p> <p>Once we had finished emptying our OSTs, we then needed to fix them at the RAID level. Because, remember, everything went to hell after multiple disk failures during a LUN rebuild. Meaning that in their current state, those two LUNs were unusable and had to be re-initialized. We had good hopes we would be able to do this from the disk array management tools. Unfortunately, our hardware vendor didn’t think it would be possible, and strongly recommended to destroy the LUN and to rebuild it with the same disks.</p> <p>The problem with that approach is that this would have generated a different identifier for our LUNs, meaning we would have had to change the configuration of our multipath layer, and more importantly, swap old WWIDs with the new ones in our Lustre management tool. Which is not supported.</p> <p>Thing is, we’re kind of stubborn. And we didn’t want to change WWIDs. So we looked for a way to re-initialize those LUNs in-place. Sure enough, failing multiple drives in the LUN rendered it inoperable. And nothing in the GUI seemed to be possible from there, besides "calling support for assistance". And you know, we tried that before, so no thanks we’ll pass.</p> <p>Finally, exploring the CLI options, we found one (<code>revive diskGroup</code>) that did exactly what we were looking for: after replacing the 2 defectives disks (which made the LUN fail), we revived it from the CLI, and it happily sprung to life again. With all its parameters intact, so from the servers point of view, it was like nothing ever happened.</p> <h3>Restore Lustre</h3> <p>So, all what was left to do, was to reformat the OSTs and restore their parameters we had backed up before failing and reviving the LUNs.</p> <h2>Wrap up</h2> <p>Everything was a smooth ride from there. While working on repairing our two failed OSTs, we were continuously replacing those ~300 defective hard drives, one at a time and monitoring the rebuilds processes. At any given time, we had something like 36 LUNs rebuilding (6 arrays, 6 LUNs each) to maximize the throughput.</p> <h3>Disk replacement</h3> <p>Our hardware vendor was sending us replacement drives in batches, and we’ve been replacing 1 disk in each LUN pretty much every day for about 3 weeks.<br> We built a tool to follow the replacements and select the next disks to replace (obviously placement was important as we didn’t want to remove multiple disks from the same LUN). The tool allowed to see the number of disks left to replace, the status of current rebuilds, and when possible, selected the next disks to replace by making them blink in the disk arrays.</p> <h3>The end</h3> <p>Just because that how lucky we are, another drawer failed during the last rounds of disk replacements. It took an extra few days to get a replacement on site and replace it. Fortunately, no unreadable sectors happened during the recovery.</p> <p>It took a few more days to clear out remaining drawers and controllers errors and to make sure that everything was stable and in running order. The official end of the operation was declared on May 17th, 2016, about 4 months after the initial double-disk failure.</p> <p>We definitely learned a lot in the process, way more that we could ever have dared to ask. And it was quite the adventure, the kind that we hope will not happen again. But considering all what happened, we’re very glad the damage was limited to a handful of files and didn’t have a much broader impact.</p> Kilian Cavalotti[email protected]