OSLAT(8)

πŸ“¦
version 2.11 Β· 4 versions
, in arch rolling, centos-stream 10, centos-stream 9, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0, ubuntu resolute, ubuntu stonking

✨ NAME ✨

oslat β€” the OS Latency Detector πŸ’– (it lives in section 8 of the manual, system manager territory, so oslat(8) bestie 🫢)

psst, this page ships under SPDX-License-Identifier: GPL-3.0-only 🌈 open source fr fr

πŸ¦‹ SYNOPSIS πŸ¦‹

oslat [ -shvz ] [ -b bucket-size ] [ -B bias ] [ -c cpu-list ] [ -C cpu-
      main-thread ] [ -f rt-prio ] [ --json filename ] [ -m workload-mem
      ] [-t runtime ] [ -T trace-threshold ] [ -w workload ] [ -W
      bucket-width ]

πŸ”₯ DESCRIPTION πŸ”₯

okay so oslat is an open source userspace polling mode stress program and its whole job is detecting OS level latency πŸ‘‘ no cap.

The way it works: the program runs a busy loop β€” either with no workload at all or with various workloads β€” and while it's doing that it's collecting TSC information and measuring the time frequently during the process πŸ’… it's giving obsessed-with-timestamps energy.


πŸŽ€ OPTIONS πŸŽ€

  • -b, --bucket-size=N β€” pick how many buckets you want (the range is 4-1024) πŸ“
  • -B, --bias β€” adds a bias to all the buckets, using the estimated minimum πŸ’œ
  • -c, --cpu-list=CPULIST β€” tell it which CPUs to run on. like for example, '1,3,5,7-15' ✨
  • -C, --cpu-main-thread=CORE β€” says which CPU the main thread runs on. default is cpu0 🌸
  • -f, --rtprio=PRIORITY β€” use a specific SCHED_FIFO priority, range 1-99 πŸ”₯ otherwise you get the default priority, which normally is SCHED_OTHER.
  • --json=FILENAME β€” write the final results into FILENAME, JSON formatted πŸ’–
  • -m, --workload-mem=SIZE β€” the size of the memory used for the workload (like 4K, 1M for example). heads up tho: total memory usage is gonna be this value multiplied by 2*N, because there's gonna be src/dst buffers for each thread, and N is the number of processors you're testing with 🧚
  • -D, --duration=TIME β€” set the test duration, e.g. 60, 20m, 2H (m/M = minutes, h/H = hours, d/D = days). by default the unit is s/second ⭐
  • -T, --trace-threshold=THRESHOLD β€” stop the test when the threshold gets triggered (in USEC). and at the same meantime, it prints a marker in ftrace and stops ftrace too πŸ’€
  • -w, --workload=WORKLOAD β€” pick a kind of workload, default is no workload. options are: "no", "memmove" πŸ¦‹
  • -s, --single-preheat β€” uses a single thread when measuring latency at the preheat stage.
⚠️ NOTE: please make sure the CPU frequency on all testing cores are locked before using this parmater. If you don't know how to lock the freq then please don't use this parameter πŸ™ˆ (she said it twice because she means it)
  • -W, --bucket-width β€” the interval between buckets, in nanoseconds.
⚠️ NOTE: widths that are not a multiple of 1000 cause ns-precision output. You are responsible for considering the impact of measurement overhead at the nanosecond scale 🫠
  • -h, --help β€” shows the help message πŸ’…
  • -v, --version β€” shows the version of the program ✨
  • -z, --zero-omit β€” doesn't display buckets in the output histogram if they're all zeros 🌈

πŸ‘‘ AUTHOR πŸ‘‘

oslat was written by Peter Xu <peterx@redhat.com> πŸ’– absolute icon behavior, we stan.


and that's the whole page bestie!! this one came out of the System Manager's Manual and it's dated August 17, 2020 β€” yeah she's an OG OSLAT(8) entry πŸ’…πŸ«Ά go measure some latency, ily, bye!! πŸŒΈπŸŽ€

πŸ“¦ where this page comes from