Burst IO Performance

Our burst IO tests operate at queue depth 1 and perform several short data transfers interspersed with idle time. The random read and write tests consist of 32 bursts of up to 64MB each. The sequential read and write tests use eight bursts of up to 128MB each. For more details, please see the overview of our 2021 Consumer SSD Benchmark Suite.

QD1 Burst IO Performance
Random Read Random Write
Sequential Read Sequential Write

On the QD1 burst IO tests, the Inland Performance Plus tops the charts for both random and sequential writes, though in the latter case performance drops quite a lot when the drive is mostly full. Random read performance is merely average, and sequential reads are disappointingly in last place.

Sustained IO Performance

Our sustained IO tests exercise a range of queue depths and transfer more data than the burst IO tests, but still have limits to keep the duration somewhat realistic. The primary scores we report are focused on the low queue depths that make up the bulk of consumer storage workloads. For more details, please see the overview of our 2021 Consumer SSD Benchmark Suite.

Sustained IO Performance
Random Read Throughput Power Efficiency
Random Write Throughput Power Efficiency
Sequential Read Throughput Power Efficiency
Sequential Write Throughput Power Efficiency

On the longer IO tests that bring in some higher queue depths, the Performance Plus loses its first-place spot for random writes to the WD Black SN850, but it hangs on to first place for sequential writes. For both random and sequential reads it manages to improve its standings slightly, but the sequential read performance remains disappointing. Power efficiency isn't great on any of these four tests, but it's decent for sequential writes and more or less matches the flagship Gen4 drives from WD and Samsung.

Random Read
Random Write
Sequential Read
Sequential Write

The Inland Performance Plus does eventually reach top-tier performance for sequential reads, but it requires higher queue depths than the 980 PRO or SN850. For sequential writes, it has taken a clear lead by QD4 and maintains higher performance than any of the other drives can hit, with only a slight drop at the end of the test suggesting that the SLC cache might be starting to run out.

For random reads and writes, the Performance Plus simply doesn't scale up as high as its competitors, even with very large queue depths. The Samsung 980 PRO's maximum random write speeds are well beyond what any other drive hits, and for random reads the WD Black SN850 has a similarly large lead over the competition.

Random Read Latency

This test illustrates how drives with higher throughput don't always offer better IO latency and Quality of Service (QoS), and that latency often gets much worse when a drive is pushed to its limits. This test is more intense than real-world consumer workloads and the results can be a bit noisy, but large differences that show up clearly on a log scale plot are meaningful. For more details, please see the overview of our 2021 Consumer SSD Benchmark Suite.

At low rates, the mean latency from the Inland Performance Plus is actually higher than the 99th percentile latency, indicating there's a small number of extremely high-latency IOs skewing the average. The median latency starts at a very respectable 63µs, but the highest latency measured at low rates is close to 70ms—three orders of magnitude slower. This looks like the drive might be stalling while waking up from a sleep state, which it shouldn't even be entering given the minimal idle time between test phases. Above 120k IOPS, the 99th percentile latency jumps up to the millisecond range, which should only happen to a drive this high-end when it's pretty close to its maximum throughput. The Performance Plus does achieve respectable throughput that is a clear improvement over the Phison E16, but compared to WD and Samsung flagships the E18 drive is slower and has some mildly concerning performance quirks.

Trace Tests: AnandTech Storage Bench and PCMark 10 Advanced Synthetic Tests: Block Sizes and Cache Size Effects
Comments Locked

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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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?
  • 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.
  • 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.)

Log in

Don't have an account? Sign up now