and kernel-space) which can lead to a decrease in the performance of a user-mode web server. Nowadays almost all web server software is executed in user mode (because many of the aforementioned small disadvantages have been overcome by faster hardware, new OS versions, much faster OS system calls and new optimized web server software). See also comparison of web server software to discover which of them run in kernel mode or in user mode (also referred as kernel space or user space). Performances To improve the user experience (on client / browser side), a web server should reply quickly (as soon as possible) to client requests; unless content response is throttled (by configuration) for some type of files (e.g. big or huge files), also returned data content should be sent as fast as possible (high transfer speed). In other words, a web server should always be very responsive, even under high load of web traffic, in order to keep total user's wait (sum of browser time + network time + web server response time) for a response as low as possible. Performance metrics For web server software, main key performance metrics (measured under vary operating conditions) usually are at least the following ones (i.e.): (, similar to , depending on HTTP version and configuration, type of HTTP requests and other operating conditions); (), is the number of connections per second accepted by web server (useful when using HTTP/1.0 or HTTP/1.1 with a very low limit of requests / responses per connection, i.e. 1 .. 20); + response time for each new client request; usually benchmark tool shows how many requests have been satisfied within a scale of time laps (e.g. within 1ms, 3ms, 5ms, 10ms, 20ms, 30ms, 40ms) and / or the shortest, the average and the longest response time; , in bytes per second. Among the operating conditions, the (1 .. n) of used during a test is an important parameter because it allows to correlate the supported by web server with results of the tested performance metrics. Software efficiency The specific web server software design and model adopted (e.g.): single process or multi-process; single thread (no thread) or multi-thread for each process; usage of coroutines or not; ... and other programming techniques, such as (e.g.): zero copy; minimization of possible CPU cache misses; minimization of possible CPU branch mispredictions in critical paths for speed; minimization of the number