Live data from Hacker News

Non-volatile Storage: CPUs no longer more performant than I/O devices

queue.acm.org

71–80 of 121 posts

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#71

Earlier quoted context omitted.

Knights Landing from Intel is already NUMA (I think). I'm not sure if it can be bought yet, but it should be very close to release.

Aren't AMD parts already (cache-coherent) NUMA?

Well, a bit, but not radical enough to be visible to its software.

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#72

Earlier quoted context omitted.

I'm probably the poster above. ;-) Yes, we layer on top of PCIe for the physical transport, but once an adapter's in CAPI mode, it's able to do translations, participate in locks, and looks more or less like a slightly-strange other thread as far as code running on the main CPU is concerned. Since the logic inside the accelerator can do pointer chasing, it can communicate directly with the application and bypass a lo…

Yes indeed, I've read about redis acceleration, are relational dbs next? Is anyone working on that?

Some colleagues from our research group are working on proving the benefits for other types of workloads than in-memory DBs.

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#73
post #60
post #45

Earlier quoted context omitted.

Brits use "whilst" instead of "while". Thank god they didn't pick the keywords of any programming languages. utilise namespace std; whilst (performant()) { pontificate(); } Edit: bonus `problematic` operator for exceptions.

I don't know, I think a "whilst loop" would be kind of charming.

It could mean while-stop or something?!

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#75
This is so true, the world has changed greatly and not everyone has gotten the memo. I saw a really cool device made by Texas Memory systems which was a "ram disk" that was all ram with disk backing, and when you lost power it flushed to disk. I wanted something that worked better for a storage paradigm and designed/invented a network accessible memory appliance[1]. Basically using ethernet packets you could store 8K integrity protected chunks right there on the network. Initially I wanted to use a typical low power CPU with a bunch of DRAM attached but the CPU bottleneck got in the way, so we redesigned/rebuilt it out of FPGAs so that it had a couple of terabytes of RAID protected RAM in an appliance with a very simple network protocol for storing and fetching 8K blocks out of what was essentially a linear address space. Two of these on different power subsystems provided all of the fault tolerance you needed and you could have a terabyte of 'structured' data live from the moment your computer booted (made for very fast recovery from reboot).

[1] https://www.google.com/patents/US8316074

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#76

Performant: still not a word.

This is the worst use of the neologism I've yet seen:

(1) It's not perfectly clear what the definition is in this particular context. Usually the word is used to indicate "our stuff is rad fast bro" implying that speed is obtained through cleverness such as the use of efficient code or an efficiently scalable architecture, but the linked article violates this definition by comparing apples (CPUs) and oranges (storage). It's nonsensical in the manner of "my word processor is more performant than my fractal renderer".

(2) Normally, use of this neologism saves time by replacing a long phrase. This use in the linked article is backwards: the word "faster" could have been used in place of the longer "more performant."

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#77
post #62
post #52

Earlier quoted context omitted.

Interesting! Incidentally (since this may be somewhat related), I'm wondering, what are your thoughts on the Persistent Memory Manager approach, as in the following: Justin Meza, Yixin Luo, Samira Khan, Jishen Zhao, Yuan Xie, and Onur Mutlu: "A Case for Efficient Hardware/Software Cooperative Management of Storage and Memory." Workshop on Energy-Efficient Design, 2013. Context: "emerging high-performance NVM technolo…

One giant flat address space is not the answer. Hardware people tend to come up with approaches like that because flat address spaces and caching are well understood hardware. It's the same thinking that leads to "storing into device registers" as an approach to I/O control, even when the interface is really packets over a serial cable as in FireWire or USB or PCI Express. File systems and databases are useful abstra…

OK I find it easier to follow these ideas when thinking about how loads/stores to volatile memory are organized. Memory is not accessed via a syscall. Instead the OS sets up some data structures in the MMU and lets the application run. Some kind of fault happens when control must be transferred back to the OS.

Going back to non-volatile memory the question is what kind of abstraction should be implemented in hardware? Presumably something simple that the OS and applications can then use to implement higher level abstractions like file systems and databases. Pushing parts of a SQL database engine into the hardware does not intuitively seem like a right solution.

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#78
post #67
post #63

Earlier quoted context omitted.

Actually, "fast" doesn't mean "performant" (OK, maybe that's not a word, in which case I mean "having high performance"), unless you want to also say "speed" means "performance". Also "utilize" is more specific than "use": it implies "using for a desirable purpose". Consider: (1) This daemon process is utilizing all the available bandwidth. (2) This daemon process is using all the available bandwidth. Sometimes peopl…

I have no idea what difference is implied between (1) and (2) there. What's the difference between speed and performance here?

(1) The bandwidth is being entirely consumed. It is all needed and the process is performing nominally.

(2) The bandwidth is being entirely consumed, but it might only be because the process is misbehaving and consuming more bandwidth than necessary.

Speed only translates to performance if the resource being quickly consumed is actually needed. Example-- a game might always use all CPU cycles, but only when rendering the most challenging scene is reaching peak performance.

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#79
post #43

Earlier quoted context omitted.

The syscall overhead isn't the problem, that's dirt cheap as you say. The problem is the context-switch overhead. Calling into the OS flushes a lot of data and instructions from the cache, and that lost performance after returning can easily add up to around 30µs.[1] [1] http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-ma...

Sounds like multiple caches are an obvious solution. No code in the OS needs access to the user code or data cache, and vice versa. Smart cache management might be one of Intel's goals for the Altera buyout.

It's already here[1], but I don't think it can be used for cache partitioning between the kernel and userspace (but I could be wrong!)

[1] http://danluu.com/intel-cat/

Re: Non-volatile Storage: CPUs no longer more performant than I/O devices

#80
post #45
post #23

Earlier quoted context omitted.

See also: "utilize" instead of "use."

Brits use "whilst" instead of "while". Thank god they didn't pick the keywords of any programming languages. utilise namespace std; whilst (performant()) { pontificate(); } Edit: bonus `problematic` operator for exceptions.

Utilise is an americanism, we don't use it in Britain (and when I first heard "burglarize" I thought it was a joke). I suspect performant is the same.

Whilst implies parallelism/concurrency, it's not the same thing as while.

Problematic is more a tumblrism than anything else.

Post reply on HN