On Mon, Nov 04, 2024 at 07:50:21PM -0800, Stanislav Fomichev wrote:
On 11/04, Joe Damato wrote:
Add an epoll busy poll test using netdevsim.
This test is comprised of:
- busy_poller (via busy_poller.c)
- busy_poll_test.sh which loads netdevsim, sets up network namespaces, and runs busy_poller to receive data and socat to send data.
The selftest tests two different scenarios:
- busy poll (the pre-existing version in the kernel)
- busy poll with suspend enabled (what this series adds)
The data transmit is a 1MiB temporary file generated from /dev/urandom and the test is considered passing if the md5sum of the input file to socat matches the md5sum of the output file from busy_poller.
netdevsim was chosen instead of veth due to netdevsim's support for netdev-genl.
For now, this test uses the functionality that netdevsim provides. In the future, perhaps netdevsim can be extended to emulate device IRQs to more thoroughly test all pre-existing kernel options (like defer_hard_irqs) and suspend.
Signed-off-by: Joe Damato jdamato@fastly.com Co-developed-by: Martin Karsten mkarsten@uwaterloo.ca Signed-off-by: Martin Karsten mkarsten@uwaterloo.ca
[...]
+static void run_poller(void) +{
- struct epoll_event events[cfg_max_events];
- struct epoll_params epoll_params = {0};
- struct sockaddr_in server_addr;
- int i, epfd, nfds;
- ssize_t readlen;
- int outfile_fd;
- char buf[1024];
- int sockfd;
- int conn;
- int val;
[..]
- outfile_fd = open(cfg_outfile, O_WRONLY | O_CREAT, 0644);
- if (outfile_fd == -1)
error(1, errno, "unable to open outfile: %s", cfg_outfile);
Any reason you're not printing to stdout? And then redirect it to a file in the shell script if needed. Lets you save some code on open/close and flag parsing :-p But I guess can keep it since you already have it all working.
No reason in particular; I thought about this while writing it, but ended up adding it as a flag in case others come along to extend this test in some capacity.
Acked-by: Stanislav Fomichev sdf@fomichev.me
Thanks for the ack!