1# NetD benchmarks 2 3These are benchmarks for libc **connect** and **gethostbyname** functions as hooked by netd. 4 5## Infrastructure 6 7The benchmarks are powered by [google-benchmark](https://github.com/google/benchmark), which records 8four statistics: 9 10<table> 11 <tr> 12 <th>Statistic</th> 13 <th>Meaning</th> 14 </tr> 15 <tr> 16 <th>real_time</th> 17 <td>Mean wall-clock time taken for each iteration of the function under test to complete. This 18 includes any time spent in other processes. 19 <p> 20 Some of the **connect** benchmarks override this by implementing their own timings, but 21 the semantics are roughly the same. See connect_benchmark.cpp for details.</td> 22 </tr> 23 <tr> 24 <th>cpu_time</th> 25 <td>Mean time spent in the current thread during each iteration of the function under test. This 26 does not include any time spent in other processes or blocking on I/O. 27 <p> 28 Since almost all of the functionality we are testing here is in the netd server, not the 29 client, these timings are not relevant and should be ignored for most purposes.</td> 30 </tr> 31 <tr> 32 <th>iterations</th> 33 <td>The number of runs of the test function that were executed, across all threads, in order for 34 the test to reach the minimum amount of time run. Most tests here define 'minimum time run' 35 in terms of real time or 'manual time', rather than CPU time, for the reasons above. 36 <p> 37 This should be roughly inversely proportional to **real_time** for single-threaded 38 benchmarks and also somewhat proportional to the number of threads used.</td> 39 </tr> 40 <tr> 41 <th>label</th> 42 <td>Field that the benchmark can fill with an arbitrary string. 43 <p> 44 For graphing purposes, a few of the benchmarks in this directory store the 90th-percentile 45 latency in this field for comparison against the mean latency 46 (it's only possible to plot one other value apart from mean). 47 <p> 48 If the graphing ecosystem ever becomes advanced enough to plot multiple outputs from one 49 label, it might be more useful to log every decile to get a better picture of how spiky 50 things are.</td> 51</table> 52 53# Methods currently being benchmarked 54 55## connect() 56 57- Documented in [connect\_benchmark.cpp](connect_benchmark.cpp) 58 59## getaddrinfo() 60 61- Documented in [dns\_benchmark.cpp](dns_benchmark.cpp) 62 63 64<style type="text/css"> 65 tr:nth-child(2n+1) { 66 background: lightgrey; 67 } 68 td,th { 69 text-align: left; 70 vertical-align: top; 71 } 72</style> 73