AnandTech Storage Bench - The Destroyer

Our AnandTech Storage Bench tests are traces (recordings) of real-world IO patterns that are replayed onto the drives under test. The Destroyer is the longest and most difficult phase of our consumer SSD test suite. For more details, please see the overview of our 2021 Consumer SSD Benchmark Suite.

ATSB The Destroyer
Average Data Rate
Average Latency Average Read Latency Average Write Latency
99th Percentile Latency 99th Percentile Read Latency 99th Percentile Write Latency
Energy Usage

The Inland Performance Plus delivers excellent overall performance on The Destroyer, but the WD Black SN850 beats it on almost every subscore. The best result from the E18 drive is with write latency, where it is the clear leader in average latency and a close second in 99th percentile latency. The energy efficiency of the Inland Performance Plus is poor—common for high-end drives, but Samsung and especially WD are better here.

AnandTech Storage Bench - Heavy

The ATSB Heavy test is much shorter overall than The Destroyer, but is still fairly write-intensive. We run this test twice: first on a mostly-empty drive, and again on a completely full drive to show the worst-case performance.

ATSB Heavy
Average Data Rate
Average Latency Average Read Latency Average Write Latency
99th Percentile Latency 99th Percentile Read Latency 99th Percentile Write Latency
Energy Usage

On the Heavy test, the Inland Performance Plus delivers great performance, though again it falls short of the WD Black SN850. It's also only a small improvement over the Phison E16-based Silicon Power US70, and several of the best Gen3 drives end up with better performance when testing against a full drive. The Performance Plus is also one of the most power-hungry drives on this test, again requiring almost 50% more energy to finish the tests than the WD Black SN850.

AnandTech Storage Bench - Light

The ATSB Light test represents ordinary everyday usage that doesn't put much strain on a SSD. Low queue depths, short bursts of IO and a short overall test duration mean this should be easy for any SSD. But running it a second time on a full drive shows how even storage-light workloads can be affected by SSD performance degradation.

ATSB Light
Average Data Rate
Average Latency Average Read Latency Average Write Latency
99th Percentile Latency 99th Percentile Read Latency 99th Percentile Write Latency
Energy Usage

The Inland Performance Plus manages a first-place finish for overall performance on the Light test, but it's only a hair faster than the Phison E16 drive or the WD Black SN850—and the WD Black has significantly better performance on the full-drive test run. The Performance Plus also doesn't quite manage first place on most of the latency subscores, and it shows a larger full-drive penalty to the write latency scores than most other high-end drives. The Inland Performance Plus is also in last place for energy usage.

PCMark 10 Storage Benchmarks

The PCMark 10 Storage benchmarks are IO trace based tests similar to our own ATSB tests. For more details, please see the overview of our 2021 Consumer SSD Benchmark Suite.

PCMark 10 Storage Traces
Full System Drive Overall Score Average Bandwidth Average Latency
Quick System Drive Overall Score Average Bandwidth Average Latency
Data Drive Overall Score Average Bandwidth Average Latency

The Inland Performance Plus provides decent but not chart-topping performance on the PCMark 10 Storage tests. For the Full System Drive and Quick System Drive tests it is not able to outperform some of the faster Silicon Motion-based NVMe drives that usually provide lower random read latency than Phison drives. On the Data Drive test that is more focused on sequential IO, several older Phison drives provide better performance, suggesting that the firmware for the E18 is tuned more for general real-world performance rather than exclusively trying to maximize simple benchmark scores—but we'd still like to see a controller this powerful consistently beating its predecessors on all kinds of workloads.

Introduction Synthetic Tests: Basic IO Patterns
POST A COMMENT

118 Comments

View All Comments

  • GeoffreyA - Thursday, May 20, 2021 - link

    "templates can do some crazy stuff. Looking up SFINAE will quickly take you down the rabbit
    hole"

    I gave it a try and, Great Scott, it's already looking like Mad Hatter territory. Will take a while to decipher all that. Even "using" and "auto" are starting to look puzzling.

    "I always used a few typedef"

    typedefs were a must to combat all those colons and endless right angle brackets.
    Reply
  • mode_13h - Thursday, May 20, 2021 - link

    > > move-constructors"

    > I suppose those are the counterparts of copy constructors
    > for an object that's about to sink into oblivion.

    This touches on something very interesting about C++, which is that certain operations on objects have well-specified semantics and the compiler is allowed to make substitutions, on that basis. This is very un- C-like, where the compiler only calls the functions you tell it to. Sure, it can optimize *out* some functions, but there's never a case where it just decides to call something different (but semantically equivalent) to what you coded.

    A move constructor (or move assignment) is allowed to assume that the only subsequent operation on the original object is destruction. So, if an existing object owns some heap-allocated memory, it can be transferred to the new object. However, it's not required to do so -- copying the data is also valid. In any case, the original object must be left in some state that still allows its destructor to successfully execute.
    Reply
  • GeoffreyA - Thursday, May 20, 2021 - link

    "the original object must be left in some state that still allows its destructor to successfully execute"

    I think I'd copy the pointers or handles over and set them to null in the original object. That ought to do it. Let's hope they don't use move constructors when they start "copying" people or things. Might be painful.
    Reply
  • mode_13h - Friday, May 21, 2021 - link

    > I think I'd copy the pointers or handles over and set them to null in the original object.

    Exactly. Transfer ownership to the new object and set the original to it empty state. That's the typical approach. And, for any data members that have their own move constructors, you invoke those.

    > Let's hope they don't use move constructors when they start "copying" people or things. Might be painful.

    Kind of like the Star Trek "transporter", though. Getting back into the familiar realm of metaphysics, I'd never send myself through one. I believe you'd die and simply create a copy who thinks they're you.
    Reply
  • GeoffreyA - Sunday, May 23, 2021 - link

    I think so too and don't like the idea of copy + destroy == teleport. The "clone think it's me" motif brings up moral questions. If I were cloned, who is the real me? Certainly, the original; but from the clone's point of view, he's the main fellow and is out to prove it. I suspect cloning hints at a breaking down of our everyday notion of self as unique instance. Three Eiffel Towers aren't a problem but would be a strange sight.

    I feel this whole thing hints at something deeper in reality. Conceivably, "move" might be impossible to implement at some primitive level. Perhaps all moves, in the universe, were implemented as copy + delete (or reassigning pointers). Even the flow of time could have been done this way, constantly copying, with changes, and throwing away the old. Taken further, I reckon that "move" could be a high-level concept; and at some pre-spacetime level, there's no location/locality.
    Reply
  • mode_13h - Sunday, May 23, 2021 - link

    > I feel this whole thing hints at something deeper in reality

    I'm not qualified to comment on that, but it reminds me of the FSA theory of spacetime.

    Also, reminds me of the recent discovery that quantum leaps aren't instantaneous, as previously thought. I'm pretty sure I didn't even know they were supposed to be instantaneous.
    Reply
  • GeoffreyA - Sunday, May 23, 2021 - link

    I remember reading about that, not too long ago, and being pleasantly surprised that there was some touch of determinism to it as well. That was a revelation.

    "instantaneous, as previously thought"

    Not too sure about quantum leaps but think that comes from collapse of the wave function, which is supposedly an instantaneous, non-local process. Some interpretations reject collapse though.
    Reply
  • GeoffreyA - Monday, May 17, 2021 - link

    I am pre-C++11 and out of touch with programming in general, sadly. And this may seem madness but I'm still using VC++ 6.0, during those rare times I touch a bit of code.

    I see C++ as a beautiful, potent language (along with the STL), despite its messiness. Its data abstraction and hiding mechanisms offer real advances over C. But a tincture of the latter's philosophy will add much to any C++ program. And I reckon that templates are where its real power lies. I mean, the idea of some function or iterator knowing nothing about some object, yet being able to operate on it. Some QuickSort could be sorting something it hasn't got a clue about, yet works because the objects defined the comparison operators. I've felt there's something strangely haunting about some of these mechanisms in C++, especially templates and virtual functions, as if they bore some elusive analogy to the mechanisms underlying reality. Who knows?
    Reply
  • mode_13h - Tuesday, May 18, 2021 - link

    > I'm still using VC++ 6.0

    OMG. Do yourself a favor and check out MS Visual Studio Community Edition.

    https://visualstudio.microsoft.com/vs/community/

    I don't have any experience with it, as I use GCC (and now Clang) directly, but I'm betting you'll never go back to VC++ 6.0, after you try it.

    > I am pre-C++11

    https://en.cppreference.com/w/

    It actually has references for both C and C++. MSDN now has all their C & C++ language + standard library references online, too.

    However, when I want to write something simple, I usually reach for Python. It's not the simple language you could learn in an afternoon, like it was 2 decades ago, but you can quickly pick up enough to be off and running in very little time, indeed.
    Reply
  • GeoffreyA - Wednesday, May 19, 2021 - link

    Much obliged!

    I actually tried VC++ 2010 some years ago, the Express version. Heard of the Community Edition too, and thought it was just another Express; but looking at it now, I see that's not the case. Who knew MS had got so generous? Well, I'm excited and will certainly give it a try when I can. Hopefully, import or recreate my 6.0 projects. And thanks for that language reference as well. I had always overlooked it and relied on the MSDN docs. It looks good. (Funny enough, I see that C++11 added an array<T, n> class. I remember I wrote my own long ago and the interface turns out to be roughly the same as that one.)
    Reply

Log in

Don't have an account? Sign up now