|
|
|
|
|
by convolvatron
3008 days ago
|
|
there can be serious performance benefits for i/o heavy workloads:
- removal of copies mandated by the user/kernel boundary - lower control transfer overhead, up to and including becoming completely polled mode. interrupt, getting into the kernel service thread from interrupt, through the kernel stack, into epoll, and into a user thread takes some time
- use of device specific features without having to plumb them through all the various kernel interfaces
- native asynch removing overheads associated with i/o thread pools
- exploitation of workload specific optimizations that would be defeated by the kernel scheduler, memory management, buffer cache, and other machinery
of course you lose all device independence from your interface, any intra-process resource sharing provided by the kernel mechanisms. you have to deal with all the error recovery and safety issues yourself. but on some occasions its really worth it. |
|