# epoll

Published articles for epoll.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## What Can You Monitor with epoll on Linux?

DevFeed: [What Can You Monitor with epoll on Linux?](<https://devfeed.tech/articles/linux-what-can-you-epoll-35432.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/linux-what-can-you-epoll/>)

Author: Graham King

Published: 2022-10-20T07:00:00Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Network](<https://devfeed.tech/topics/network.md>), [async](<https://devfeed.tech/topics/async.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Streams](<https://devfeed.tech/topics/streams.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [epoll](<https://devfeed.tech/tags/epoll.md>), [file](<https://devfeed.tech/tags/file.md>), [go](<https://devfeed.tech/tags/go.md>), [linux](<https://devfeed.tech/tags/linux.md>), [logging](<https://devfeed.tech/tags/logging.md>), [network](<https://devfeed.tech/tags/network.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [process](<https://devfeed.tech/tags/process.md>), [rust](<https://devfeed.tech/tags/rust.md>), [software](<https://devfeed.tech/tags/software.md>), [tcp](<https://devfeed.tech/tags/tcp.md>), [tokio](<https://devfeed.tech/tags/tokio.md>), [udp](<https://devfeed.tech/tags/udp.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

This article surveys Linux file descriptors that can be monitored with epoll, including network sockets, timers, signals, filesystem events, child processes, terminals, page faults, and seccomp notifications. It explains how these sources can be integrated into an epoll event loop or an asynchronous engine such as Go or Rust's tokio.

### Source excerpt

On Linux what can you turn into a file descriptor and then monitor with epoll?

## epoll: The API that powers the modern internet

DevFeed: [epoll: The API that powers the modern internet](<https://devfeed.tech/articles/epoll-the-api-that-powers-the-modern-internet-35395.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/epoll-the-api-that-powers-the-modern-internet/>)

Author: Graham King

Published: 2022-01-03T23:46:10Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [epoll](<https://devfeed.tech/tags/epoll.md>), [history](<https://devfeed.tech/tags/history.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-kernel](<https://devfeed.tech/tags/linux-kernel.md>), [network-programming](<https://devfeed.tech/tags/network-programming.md>), [networking](<https://devfeed.tech/tags/networking.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This article explains how Linux's epoll API addresses the C10K problem by efficiently handling network connections while clients or servers wait for data. It connects epoll with Go and nginx server software and contrasts it with process and thread pools, while noting related polling approaches on other operating systems.

### Source excerpt

Linux's epoll API solved the C10K problem, enabling fast and afforable Internet services.

## Epoll's design limitations in multithreaded and load-balancing scenarios

DevFeed: [Epoll's design limitations in multithreaded and load-balancing scenarios](<https://devfeed.tech/articles/epoll-is-fundamentally-broken-1-2-38959.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-02-20-epoll-is-fundamentally-broken-12>)

Author: Marek

Published: 2017-02-19T23:00:00Z

Content type: opinion

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [IO](<https://devfeed.tech/topics/io.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Load Balancing](<https://devfeed.tech/topics/load-balancing.md>)

Tags: [epoll](<https://devfeed.tech/tags/epoll.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [threading](<https://devfeed.tech/tags/threading.md>), [thundering-herd](<https://devfeed.tech/tags/thundering-herd.md>)

### AI overview

This article examines design limitations in Linux epoll, focusing on event delivery when file descriptors are shared across worker threads and on epoll's association with underlying kernel objects rather than file descriptors. It recommends defensive programming and avoiding several sharing, forking, and load-balancing patterns.

### Source excerpt

Epoll is fundamentally broken 1/2 I/O multiplexing part #3 In previous articles we talked about: This time we'll focus on Linux's successor - the I/O multiplexing syscall. Epoll is relatively young. It was created by Davide Libenzi in 2002. For comparison: Windows did IOCP in 1994 and FreeBSD's kqueue was introduced in July 2000. Unfortunately, even though epoll is the youngest in the advanced IO multiplexing family, it's the worse in the bunch.

## In-memory key-value store in C, Go and Python

DevFeed: [In-memory key-value store in C, Go and Python](<https://devfeed.tech/articles/in-memory-key-value-store-in-c-go-and-python-35419.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/in-memory-key-value-store-in-c-go-and-python/>)

Author: Graham King

Published: 2012-03-13T05:00:08Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Memcached](<https://devfeed.tech/topics/memcached.md>), [Python](<https://devfeed.tech/topics/python.md>), [networking](<https://devfeed.tech/topics/networking.md>), [POSIX](<https://devfeed.tech/topics/posix.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [epoll](<https://devfeed.tech/tags/epoll.md>), [go](<https://devfeed.tech/tags/go.md>), [memcached](<https://devfeed.tech/tags/memcached.md>), [networking](<https://devfeed.tech/tags/networking.md>), [posix](<https://devfeed.tech/tags/posix.md>), [python](<https://devfeed.tech/tags/python.md>), [software](<https://devfeed.tech/tags/software.md>), [tcp](<https://devfeed.tech/tags/tcp.md>)

### AI overview

The article describes implementing an in-memory key-value store in C, Go, and Python using enough of the memcached protocol to test with a client. It compares the implementations and explains networking details including TCP_NODELAY, Nagle's algorithm, delayed acknowledgments, non-blocking sockets, epoll, and futexes.

### Source excerpt

"Coder's paternity leave turns into polyglot key-value store adventure"