Fast-Servers
6 hours ago
- #epoll-kqueue
- #server-optimization
- #network-programming
- Popular network-server programming pattern involves a main loop waiting for events and dispatching based on file descriptors.
- Modern designs leverage epoll and kqueue for better performance, though often through wrappers like libevent.
- Recommended design avoids complex decision points, using simple blocking/IO calls for high performance (100k requests/second).
- Key steps include determining core count, setting thread attributes, and initializing per-thread epoll/kqueue.
- Processor affinity and file descriptor limits are crucial for optimal performance.
- Socket options like disabling lingering and enabling deferred accepts improve efficiency.
- Task scheduling can be optimized by analyzing workload and introducing bias in thread selection.
- Each file descriptor is handled by a single thread, simplifying state management and improving performance.