Live data from Hacker News

Viewing profile — benlwalker

benlwalker

HN member
Joined
Sat, Apr 16, 2016, 6:16 PM UTC
HN karma
298
Public activity
63 items

About benlwalker

Principal Engineer at NVIDIA. SPDK maintainer. https://spdk.io

Recent public activity

  1. comment
    Comment #45139208

    SPDK will be able to fully saturate the PCIe bandwidth from a single CPU core here (no secret 6 threads inside the kernel). The drives are your bottleneck so it won't go faster, bu…

  2. comment
    Comment #44819621

    For an expanding array in a 64 bit address space, reserving a big region and mmaping it in as you go is usually the top performing solution by a wide margin. At least on Linux, it …

  3. comment
    Comment #41404015

    Compared to libraries like bgfx and sokol at least, I think there are two key differences. 1) SDL_gpu is a pure C library, heavily focused on extreme portability and no depedencies…

  4. comment
    Comment #41259026

    The eBPF programs are strictly bounded. And they're scoped to their own memory that you have to pre-load from the actual storage with separate commands issued from the CPU (presuma…

  5. comment
    Comment #41258795

    We tried to standardize exactly this - eBPF programs offloaded onto the device. The NVMe standard now has a lot of infrastructure for this standardized, including commands to disco…

  6. comment
    Comment #39357037

    Yes, I've seen some clearer cases made for networking. In networking there is no standard for the hardware interface. Every vendor does their own thing. Except many can at least ha…

  7. comment
    Comment #39352103

    I don't get it either, and I'm a maintainer of SPDK which provides multiple implementations of virtualized devices and is frequently used inside DPUs to present storage devices. If…

  8. comment
    Comment #37343359

    Is it really that much code? I don't know GPU hardware, but the NVMe spec header file in SPDK is around 4k lines[0]. If there's 7 of them and they're twice as complicated each, we'…

  9. comment
    Comment #37123855

    Pre-commit means before committed to the canonical repo, not before commit locally. The SPDK project has an elaborate pre-commit review and test system all in public. See https://s…

  10. comment
    Comment #36749543

    iWARP maybe, but I don't think you want to offload all of TCP to hardware. You want to leave congestion control and all that to software. I don't entirely know if that's why iWARP …

  11. comment
    Comment #36749289

    At 200+ Gbps, the copy from LLC where the packet landed to the userspace buffer dominates the performance profiles on most systems. The TCP processing isn't bad and the expensive p…

  12. comment
    Comment #36749215

    RDMA is great and similar, but behaves very differently from TCP in the face of network congestion and longer distance traversals. This is essentially trying to get the best parts …

  13. story
  14. comment
    Comment #35654622

    XRP is a regular BPF hook in Linux and requires no additional standardization. The device never "calls out to BPF programs in the driver" - it generates a normal completion interru…

  15. comment
    Comment #35653631

    I am very closely tied to what the NVMe vendors want, having written the first internal draft of the proposal to the standards body (since that draft many smart people have taken t…

  16. comment
    Comment #35649908

    Associating the desire of NVMe vendors to allow users to ship down eBPF programs to run on the device and XRP is a major mistake in the article. XRP has nothing to do with what the…

  17. comment
    Comment #35555868

    For many syscalls, the primary overhead is the transition itself, not the work the kernel does. So doing 50 operations one by one may take, say, 10x as much time as a single call t…

  18. comment
    Comment #35550066

    You can also use umwait on the next completion entry in the ring

  19. comment
    Comment #35549167

    Without the submission batching you lose your system call reduction and that is far and away the biggest benefit.

  20. comment
    Comment #35549053

    Imagine you have a piece of software that runs in an event loop (as many things do). On each loop, queue up all system calls you'd like to perform. At the end of the loop, do one s…

  21. comment
    Comment #35549025

    IOCP certainly was ahead of its time, but it only does the completion batching, not the submission batching. io_uring is significantly better than anything available on Windows rig…

  22. comment
    Comment #35548968

    I've spent essentially the last year trying to find the best way to use io_uring for networking inside the NVMe-oF target in SPDK. Many of my initial attempts were also slower than…

  23. comment
    Comment #33223647

    And io_uring itself was more directly inspired by NVMe and RDMA, which of course work with these same queues as GFX cards. The original io_uring patch compares itself to SPDK, whos…

  24. comment
    Comment #33223602

    Windows did already have async ("overlapped") IO, and a completion aggregator (IOCP) kind of like io_uring. What Windows didn't have, and the reason they're now adding their own IO…

  25. comment
    Comment #33076066

    As an alternative, may I offer you a wasm port? https://play.classicuo.org/ (I've never used this but I heard it runs well)