Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Install Ubuntu’s wrk package, verify it, and start with a controlled command such as wrk -t4 -c100 -d30s --latency http://127.0.0.1:8080/. This runs four worker threads and 100 total connections for 30 seconds, then prints detailed latency statistics. Treat those values as a repeatable starting workload—not a universal performance target—and increase load only while monitoring both the client and server.

What wrk measures

wrk is a multithreaded HTTP load generator designed to create substantial traffic from one multicore CPU. It uses scalable event notification systems such as Linux epoll and can optionally run LuaJIT scripts to generate requests, validate responses, or produce custom reports. A run measures the behavior of a particular endpoint under a particular workload; it does not produce a portable “Ubuntu latency score.”

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Latency is the time between wrk sending a request and receiving the response. Throughput is reported separately as requests per second and transferred bytes per second. A fast average can hide occasional long requests, queueing, timeouts, or client-side saturation, so a useful benchmark records latency distribution, errors, throughput, workload settings, and the machines and network path involved.

Before you generate load

  • Benchmark only an endpoint you own or have explicit permission to test. A high-concurrency run against a third-party service can be disruptive or violate its terms.
  • Prefer a local, development, or staging target for the first run. Production testing requires an agreed traffic window, rollback plan, and server-side observability.
  • Keep the URL, method, path, headers, body, authentication state, duration, thread count, connection count, client host, server host, and network path fixed when comparing builds or configuration changes.
  • Monitor CPU, memory, network, connection counts, application queues, database pools, and error logs on the server. Monitor CPU and network use on the wrk host as well.

Warm-up traffic should be separated from measured traffic when caches, JIT compilation, connection pools, TLS session setup, or lazy initialization affect the first requests.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.

Install wrk on Ubuntu

Use Ubuntu’s package

Ubuntu’s Noble documentation lists the package as wrk, version 4.1.0-4build2. Install it with the package manager and confirm the executable before testing:

sudo apt update
sudo apt install wrk
wrk --version

The command form is wrk <options> <url>. If wrk --version reports a version, the client is ready. The exact package revision can differ on another Ubuntu release or after repository updates, so record the version printed on the machine used for each benchmark.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build the upstream source

An upstream build is useful when the repository version or compile-time options matter. Obtain the wg/wrk source, change into its directory, and run:

make

The project’s INSTALL instructions say that wrk builds on most UNIX-like systems with GNU make, LuaJIT, and OpenSSL. It can use bundled dependencies or system installations selected with WITH_LUAJIT and WITH_OPENSSL. Record the source revision, compiler, dependency versions, and build options; otherwise a later comparison may mix application changes with a different load generator.

Run a reproducible baseline

Use a controlled endpoint first. This example assumes an HTTP service listening on the local machine at port 8080:

wrk -t4 -c100 -d30s --latency http://127.0.0.1:8080/
  1. Choose the target. Use a URL whose behavior and ownership are known. A local address removes Internet variability, but it can also make the client and server compete for the same CPU, so a separate load-generator host is preferable for capacity work.
  2. Set worker threads with -t4. Four wrk worker threads issue and receive requests concurrently. This is a starting value, not a recommendation for every CPU.
  3. Set total open connections with -c100. The run maintains 100 HTTP connections in total, divided among the worker threads.
  4. Run for 30 seconds with -d30s. The duration is long enough to reduce the influence of one connection burst while remaining easy to repeat.
  5. Request detailed statistics with --latency. Without this option, the report still includes throughput and basic latency information, but the detailed latency distribution is omitted.
  6. Save the complete output. Store the command, wrk version, date, host details, and report beside the application version or configuration being tested.

For a real comparison, run a separate warm-up period, then repeat the measured command under each condition. Increase concurrency in controlled steps rather than jumping directly to a very large value.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

Choose threads, connections, and duration

Option Meaning How to choose it
-tN Number of wrk worker threads. Start near the number of CPU cores available to the load generator, then check whether the client becomes CPU-bound. More threads do not create server capacity if the client is already saturated.
-cN Total simultaneous HTTP connections. Model the concurrency you need to study. Each thread handles a share of the total; -c100 means 100 overall, not 100 per thread.
-dTIME Run duration, such as 2s, 2m, or 2h. Use a short run for a smoke test and a longer run for steady-state behavior. Short tests are more sensitive to connection setup and warm-up effects.
--timeout TIME Maximum time to wait for a response before recording a timeout. Choose a limit that reflects the test’s objective and report timeouts separately from successful latency.
--latency Print detailed latency statistics. Use it whenever tail behavior or spread matters, not only the average.
-H 'Name: value' Add a request header. Use the same headers as the real client when content negotiation, caching, routing, or authentication depends on them.
-s script.lua Load a LuaJIT workload script. Use it for POST bodies, changing headers, multiple paths, authentication flows, response checks, or custom reporting.

Ubuntu documents SI suffixes for numeric arguments, including 1k, 1M, and 1G. Confirm the accepted syntax on the installed version when using large values.

Vary more than one workload axis

A comparison that changes only the connection count can miss an important bottleneck. When alternatives exist, test at least two axes:

  • Concurrency: vary total connections and, where useful, worker threads.
  • Request shape: vary method, path, headers, body size, and authentication state.
  • Duration: compare short and sustained runs when warm-up, cache expiry, or resource leaks could matter.

Change one factor at a time within a test series. For example, hold four threads and 30 seconds constant while testing 25, 100, and 400 connections; then hold the connection count constant while changing the request shape.

Read every part of the wrk report

A normal report identifies the worker-thread and connection counts, then prints per-thread and aggregate results. With --latency, inspect the following fields:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Latency average: the arithmetic mean for completed requests. It is useful for a central tendency but can conceal a long tail.
  • Standard deviation: how widely observations vary around the average. A larger value indicates less consistency.
  • Maximum: the slowest observed completed request. It is sensitive to one-off events, but it still reveals the worst sample in that run.
  • Percentage within one standard deviation: the share of observations close to the average under wrk’s reported distribution. It is not a service-level percentile such as p95 or p99.
  • Requests/sec: request throughput, shown per thread and in aggregate.
  • Transfer/sec: response data transferred per second. This depends on response size as well as request rate.
  • Total requests and bytes: the amount completed during the run. Use these to sanity-check that repeated runs actually generated comparable work.
  • Timeouts and errors: failures or requests that exceeded the timeout. Keep them separate from successful-request latency; a low average among successes is not reassuring if many requests failed.

The upstream README’s illustrative 30-second run used 12 threads and 400 connections and reported 635.91 microseconds average latency, 0.89 milliseconds standard deviation, 12.92 milliseconds maximum, 93.69% within one standard deviation, 748,868.53 requests per second, and 606.33 MB/sec transfer. Those figures belong only to that sample’s hardware, endpoint, response, and network conditions; they are not expected Ubuntu results or targets.

No universal latency, throughput, or percentile target is established for wrk on Ubuntu. Set acceptance thresholds from the endpoint’s own requirements and compare distributions under the same conditions.

Rank #3
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

Benchmark a POST or authenticated endpoint with Lua

Command-line options cover simple GET requests and static headers. Use -s when the request needs a body, a changing value, several paths, an authentication sequence, response validation, or a custom report.

Minimal POST script

Save a script such as post.lua on the load-generator host:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
wrk.method = 'POST'
wrk.headers['Content-Type'] = 'application/json'
wrk.body = '{"event":"benchmark","value":1}'

Run it with a fixed duration and concurrency:

wrk -t4 -c50 -d30s --latency -s post.lua http://127.0.0.1:8080/events

This changes the method, header, and body without adding per-request Lua work. The wrk maintainers note that changing only method, path, headers, or body has no performance impact in itself. That makes a static request script preferable to rebuilding identical data for every request.

Dynamic headers and paths

Use the script hooks when each request needs a different value. For example:

request = function()
  local id = math.random(1, 1000000)
  wrk.method = 'GET'
  wrk.headers['X-Test-Id'] = tostring(id)
  return wrk.format(nil, '/items/' .. tostring(id))
end

Dynamic generation can model realistic traffic, but it consumes client CPU. Keep the generated work as small as possible and monitor the wrk host; otherwise the benchmark measures script execution limits rather than server latency.

Authentication and response checks

For a static bearer token, set a header in the script:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
wrk.headers['Authorization'] = 'Bearer replace-with-a-test-token'

Use a dedicated test credential with the minimum required permissions and avoid writing secrets to shared logs. Authentication flows that require a login request followed by a token-bearing request need a script that coordinates those requests and stores the resulting token. A response-validation hook can check status or body content, but the upstream guidance warns that work in response(), especially constructing a new request there, reduces the load wrk can generate. Measure and report that client-side cost when using validation.

Do not silently accept authentication failures. Verify status codes and server logs, and report rejected requests separately. A benchmark that receives a fast unauthorized response is not measuring the protected operation.

Make results repeatable

Separate warm-up from measurement

Run traffic without recording it as the result while caches fill, JIT code compiles, connection pools open, and TLS sessions are established. Start the measured interval only after the application reaches the state you intend to compare. If cold-start performance matters, define a separate cold-start test instead of mixing both states.

Repeat each condition

Run each workload more than once and preserve every report. Compare the distribution, average, standard deviation, maximum, throughput, and error counts across repetitions. A single average cannot show whether a result is stable or was caused by one transient event.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Record the test envelope

  • wrk version or source revision and build options.
  • Ubuntu release and kernel, CPU model and core count, memory, and governor or power policy.
  • Client and server hostnames, resource limits, and network path.
  • URL, HTTP method, headers, body, authentication state, and response-size characteristics.
  • Thread count, connection count, duration, timeout, script filename and revision, and warm-up procedure.
  • Server deployment version, configuration, dependency versions, and relevant cache or database state.
  • Successful requests, timeouts, errors, aggregate requests/sec, transfer/sec, and detailed latency output.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot misleading or failed runs

wrk reaches 100% CPU

If the load-generator CPU is saturated, wrk cannot create the intended request rate. The measured latency then includes client-side queuing and scheduling limits. Reduce threads or connections, simplify Lua work, move wrk to a stronger or separate host, or distribute load across multiple generators. Do not interpret a client-bound run as the server’s maximum capacity.

Connection errors occur at the start

The server’s listen backlog should exceed the number of concurrent connections needed during the initial burst. Raise the backlog and related operating-system limits only within the constraints of the application and operating system, then rerun the same workload. Check server logs to distinguish refused connections from application errors.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

New connections or ports are exhausted

The load generator needs enough ephemeral ports, and closed sockets must recycle quickly. Lower concurrency or run from another host while checking the client’s port range and socket state. If a test repeatedly leaves many connections in a closing state, investigate connection reuse and operating-system limits before increasing load.

Latency rises while throughput stops increasing

This pattern often indicates a saturated server resource, a queue, a rate limit, or a client bottleneck. Correlate wrk output with server CPU, memory, database and connection-pool utilization, network throughput, and application logs. Repeat at lower connection counts to locate the point where queueing begins.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Results vary sharply between runs

Check for warm-up differences, background jobs, cache state, autoscaling, noisy neighbors, changing request data, DNS or network variation, and an overloaded client. Fix the source of variation, lengthen the measured interval when appropriate, and report the spread rather than selecting the most favorable run.

Timeouts appear with a low average

Inspect timeout counts and the maximum latency separately. A low average calculated from completed requests can coexist with a serious tail of requests that never completed within the configured timeout. Increase the diagnostic detail, examine server logs, and choose a timeout that matches the user-visible requirement.

Report and compare benchmark results

A useful result is a complete condition, not a lone number. Label each row in your notes with the endpoint and request shape, then include the wrk command and environment beside the output. A compact comparison table can use columns such as:

Condition Threads/connections Duration Request shape Average latency Spread and maximum Requests/sec Transfer/sec Timeouts/errors
Example label 4 / 100 30 seconds GET / From the run Standard deviation and maximum from the run From the run From the run From the run

When comparing application versions, keep the workload and test envelope identical, change one implementation variable at a time, and preserve raw reports. Explain whether the run was client-bound, server-bound, warm, cold, local, or across a network. That context makes the latency number actionable and prevents an illustrative sample from being mistaken for a guarantee.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.