3 ms·
> But utilizing these hardware capabilities with traditional blocking interfaces, like pread(), would involve many threads and, hence, some overhead here and th
by Matthias247 4y ago
> But utilizing these hardware capabilities with traditional blocking interfaces, like pread(), would involve many threads and, hence, some overhead here and there (like increased memory footprint or context switching). Moreover, QuestDB's threading model operates on a fixed-size thread pool and doesn't assume running more threads than the available CPU cores.
> Here we're using 8 threads to make blocking read calls to the same CSV file and observe 223MB/s read rate which is not bad at all.
Why is this? This is not an IO efficient usage of threads. And using io_uring to circumvent that bottleneck might be a solution, but just bumping the threadcount for IO seems a lot more straightforward. Using one thread per CPU core is a decent baseline if everything is async, but for blocking IO you would want a lot more threads.