{"id":17722785,"url":"https://github.com/bramp/threadnetperf","last_synced_at":"2025-08-01T10:39:41.911Z","repository":{"id":137253745,"uuid":"900952","full_name":"bramp/threadnetperf","owner":"bramp","description":"Threadnetperf is a highly customisable high performance multi-threaded network benchmarking tool","archived":false,"fork":false,"pushed_at":"2010-09-10T13:29:00.000Z","size":576,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T18:51:10.683Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://bramp.net/blog/threadnetperf-v1-0","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bramp.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-09-10T09:26:06.000Z","updated_at":"2025-01-03T02:29:39.000Z","dependencies_parsed_at":"2023-03-21T09:17:57.523Z","dependency_job_id":null,"html_url":"https://github.com/bramp/threadnetperf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fthreadnetperf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fthreadnetperf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fthreadnetperf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bramp%2Fthreadnetperf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bramp","download_url":"https://codeload.github.com/bramp/threadnetperf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246473273,"owners_count":20783236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-25T15:39:22.779Z","updated_at":"2025-03-31T13:25:15.510Z","avatar_url":"https://github.com/bramp.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"****** Threadnetperf ******\r\nA multi-threaded network benchmark tool\r\n by  Andrew Brampton \u003cbrampton@gmail.com\u003e (2007-2009)\r\n and Mathew Faulkner (2007-2009)\r\n\t\r\nThreadnetperf is a highly customisable high performance network benchmarking\r\ntool. The key difference from previous tools is that the user is able to control\r\nhow many threads threadnetperf uses, as well as which cores these threads are\r\npinned to. This tool was useful in our research for measuring the effect of\r\nsending or receiving from one core, and having the OS network stack run on\r\nanother core. Additionally the tool can be configured to use an unlimited number\r\nof connections, threads or processes, which scale considerably well due to the\r\nuse of the epoll API.\r\n\r\nThreadnetperf has previously worked on Windows, Linux, and FreeBSD, however, we\r\ndo not test it very rigorously so one of these platforms may be broken. All\r\npatches are welcome.\r\n\r\nTo build on a *nix style system just use the simple \"Makefile\" by executing the\r\ncommand \"make\" or \"gmake\". To build on Windows just use the provided\r\nthreadnetperf.2008.sln file.\r\n\r\nAll the commands of Threadnetperf are documented within the application, but a\r\nquick overview is here:\r\n\r\nUsage: threadnetperf [options] tests\r\nUsage: threadnetperf -D [options]\r\n       -c level,interval   Confidence level, must be 95 or 99\r\n       -D         Use daemon mode (wait for incoming tests)\r\n       -d time    Set duration to run the test for\r\n       -e         Eat the data (i.e. dirty it)\r\n       -H host    Set the remote host(and port) to connect to\r\n       -h         Display this help\r\n       -i min,max Set the minimum and maximum iterations\r\n       -m [t,p]   What programming model to use, [thread or process]\r\n       -n         Disable Nagle's algorithm (e.g no delay)\r\n       -p port    Set the port number for the first server thread to use\r\n       -s size    Set the send/recv size\r\n       -T         Timestamp packets, and measure latency (only on *nix)\r\n       -t         Use TCP\r\n       -r         Packets per second rate (default: ~0)\r\n       -u         Use UDP\r\n       -v         Verbose\r\n       -V         Display version only\r\n\r\n       tests      Combination of cores and clients\r\n       tests      Core numbers are masks, for example 1 is core 0, 3 is core 0\r\nand core 1\r\n               N{c-s}   N connections\r\n                        c client cores mask\r\n                        s server cores mask\r\n\r\nYou can run tests locally, or across two machines. Here are some examples:\r\n\r\n    threadnetperf -n -s 10000 1{1-1}\r\n\r\nWill run a local TCP test, with Nagle's algorithm disabled, a send size of\r\n10,000, and 1 TCP connection between cores 0 and 0.\r\n\r\n    threadnetperf 10{1-1} 10{2-2} 10{4-4}\r\n\r\nWill again run a local TCP test, however this time 10 connection from core 0 to\r\ncore 0, 10 connections from core 1 to core 1, and 10 connections from core 2 to\r\ncore 2\r\n\r\nTo run across a network just start the threadnetperf daemon on one of the\r\nmachines like so:\r\n\r\n     threadnetperf -D\r\n\r\nand on the other machine execute:\r\n\r\n     threadnetperf -H serverIP 1{1-2}\r\n\r\nwhich will conduct a TCP test from the client to the server, with one thread\r\nexecuting on client's core 0, and the server's core 1.\r\n\r\nThere is no need to give the threadnetperf daemon any options, as the options\r\nconfigured on the server will be passed over the network. This make running many\r\ntests very easy as the daemon will continue to wait for new tests until it is\r\ntold otherwise.\r\n\r\nIf you find this tool useful, or you have any suggestions for improvements then\r\nplease contact us.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbramp%2Fthreadnetperf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbramp%2Fthreadnetperf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbramp%2Fthreadnetperf/lists"}