News for hackers. Stuff that matters.
Re:Nvidia Unveils GeForce RTX 30 Series GPUs by wtallis on Tuesday September 01, 2020 @05:57PM (#24347607)
> One thing I'm curious about is the RTX IO feature. The slide said it supports DirectStorage for Windows, but is there an equivalent to this for Linux? I'm hoping someone with a little more insight or an Nvidia employee may have some more information.

I haven't been able to find any real technical details about what DirectStorage really is, but my expectations are that it will consist of:

1. An asynchronous IO API allowing for low-overhead submission of IO requests from the application to the kernel, including batch submissions and reaping of completion events.

2. Some provision for transparent compression offload, either to the GPU or to a CPU-based fallback

3. Optional support for peer-to-peer DMA transfers of data from SSD to the GPU's VRAM

Linux is already the gold standard for (1) with the relatively recent io_uring API, and has support for (3) to some extent (P2P DMA has been a fairly obscure feature until recently).

There are still some pretty big unanswered questions about DirectStorage. How well will it reduce the IO overhead that currently allows antivirus and other programs to hook into the IO stack? Will it be compatible with non-Microsoft NVMe drivers, including Intel's RST drivers that are commonly used for their software RAID? Microsoft doesn't seem to want to make that kind of information public this year.

Re:Nvidia Unveils GeForce RTX 30 Series GPUs by AaronFriel on Tuesday September 01, 2020 @06:57PM (#24348098)
Linux is the gold standard for (1)?

Windows NT 3.5 (1994) would beg to differ with its support for IO completion ports (IOCP). I think io_uring is more general and more flexible for the sort of M:N scheduling systems now commonly used in programming languages, but IOCP predates io_uring by 25 years!

The rest of your comment sounds right to me, there are unanswered questions about how DirectStorage interacts with filesystem filter drivers.

Re:Nvidia Unveils GeForce RTX 30 Series GPUs by wtallis on Tuesday September 01, 2020 @07:37PM (#24348385)
Being old isn't particularly interesting here. io_uring can do 2.5M IOPS per CPU core with a sufficiently fast SSD. I've never seen any suggestion that IO overhead on Windows can be cut down enough to get close to that. And if IOCP was actually good for this use case, Microsoft wouldn't be hyping a new DirectStorage API. (It might turn out that DirectStorage is new window dressing on top of IOCP, but I suspect they've had to cut stuff out of the existing IO stack to reduce overhead.)
Re:Nvidia Unveils GeForce RTX 30 Series GPUs by AaronFriel on Tuesday September 01, 2020 @08:08PM (#24348598)
I think my point was largely that Windows already has (1) from your list and it's already the gold standard on Windows, and has been available for some 25 years. I would be surprised if it wasn't part of the mechanism used in DirectStorage.

io_uring does have a more ergonomic and POSIX API, but that's because it's on Linux! Fundamentally they're both completion port based replacements to polling for IO events and they're both capable of high throughput and horizontal scaling.

Re:Nvidia Unveils GeForce RTX 30 Series GPUs by wtallis on Tuesday September 01, 2020 @08:20PM (#24348692)
Ok, the misunderstanding here may be that I was using "gold standard" as a superlative among async IO APIs in general, while you're using it as a superlative among a given platform's set of IO APIs, async or otherwise.
Re:Nvidia Unveils GeForce RTX 30 Series GPUs by PeCaN on Wednesday September 02, 2020 @08:57AM (#24352730)
I was extremely (I think justifiably) skeptical of async I/O on Linux for the longest time but now I legitimately think with io_uring Linux is actually somehow the gold standard for (1). They really got their act together. io_uring is really good.
Re:Nvidia Unveils GeForce RTX 30 Series GPUs by jiggawatts on Tuesday September 01, 2020 @06:38PM (#24347938)
It's the same tech used by the next-gen consoles (e.g.: PS5).

Essentially, it's about streaming game textures directly into the GPU memory.

The idea is that this is highly asynchronous and parallel from the perspective of the CPU, so trying to do this through the "main game loop" would be an absolute nightmare to code at the scale we're talking about here. Think 50K IOPS sustained at 8GB/s with pretty hard real time guarantees.

Re:Nvidia Unveils GeForce RTX 30 Series GPUs by modeless on Tuesday September 01, 2020 @06:35PM (#24347921)
There's a slightly more detailed blog post here: https://devblogs.microsoft.com/directx/directstorage-is-comi...
Re:Nvidia Unveils GeForce RTX 30 Series GPUs by wtallis on Tuesday September 01, 2020 @06:42PM (#24347965)
Yeah, I already read that. If you pay attention, you'll notice it talks a lot about the problem they're trying to solve, and very little about how exactly they're going about solving it. Partly because it's apparently still in flux, which calls into question what's going on with the storage API for the Xbox, which really should have been nailed down by now.