---
name: "perf_4.19-bench"
section: "1"
platform: "linux"
package: "linux-perf-4.19"
version: "4.19.249-2"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/perf_4.19-bench"
---

# perf\_4.19-bench(1)

General framework for benchmark suites

## NAME

perf-bench - General framework for benchmark suites

## SYNOPSIS

```
perf bench [<common options>] <subsystem> <suite> [<options>]
```

## DESCRIPTION

This *perf bench* command is a general framework for benchmark suites.

## COMMON OPTIONS

\-r, --repeat=

Specify amount of times to repeat the run (default 10).

\-f, --format=

Specify format style. Current available format styles are:

*default*

Default style. This is mainly for human reading.

```
% perf bench sched pipe                      # with no style specified
(executing 1000000 pipe operations between two tasks)
        Total time:5.855 sec
                5.855061 usecs/op
                170792 ops/sec
```

*simple*

This simple style is friendly for automated processing by scripts.

```
% perf bench --format=simple sched pipe      # specified simple
5.988
```

## SUBSYSTEM

*sched*

Scheduler and IPC mechanisms.

*mem*

Memory access performance.

*numa*

NUMA scheduling and MM benchmarks.

*futex*

Futex stressing benchmarks.

*all*

All benchmark subsystems.

### SUITES FOR *sched*

**messaging**

Suite for evaluating performance of scheduler and IPC mechanisms. Based on hackbench by Rusty Russell.

### Options of messaging

\-p, --pipe

Use pipe() instead of socketpair()

\-t, --thread

Be multi thread instead of multi process

\-g, --group=

Specify number of groups

\-l, --nr\_loops=

Specify number of loops

### Example of messaging

```
% perf bench sched messaging                 # run with default
options (20 sender and receiver processes per group)
(10 groups == 400 processes run)
      Total time:0.308 sec
% perf bench sched messaging -t -g 20        # be multi-thread, with 20 groups
(20 sender and receiver threads per group)
(20 groups == 800 threads run)
      Total time:0.582 sec
```

**pipe**

Suite for pipe() system call. Based on pipe-test-1m.c by Ingo Molnar.

### Options of pipe

\-l, --loop=

Specify number of loops.

### Example of pipe

```
% perf bench sched pipe
(executing 1000000 pipe operations between two tasks)
        Total time:8.091 sec
                8.091833 usecs/op
                123581 ops/sec
% perf bench sched pipe -l 1000              # loop 1000
(executing 1000 pipe operations between two tasks)
        Total time:0.016 sec
                16.948000 usecs/op
                59004 ops/sec
```

### SUITES FOR *mem*

**memcpy**

Suite for evaluating performance of simple memory copy in various ways.

### Options of memcpy

\-l, --size

Specify size of memory to copy (default: 1MB). Available units are B, KB, MB, GB and TB (case insensitive).

\-f, --function

Specify function to copy (default: default). Available functions are depend on the architecture. On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.

\-l, --nr\_loops

Repeat memcpy invocation this number of times.

\-c, --cycles

Use perf’s cpu-cycles event instead of gettimeofday syscall.

**memset**

Suite for evaluating performance of simple memory set in various ways.

### Options of memset

\-l, --size

Specify size of memory to set (default: 1MB). Available units are B, KB, MB, GB and TB (case insensitive).

\-f, --function

Specify function to set (default: default). Available functions are depend on the architecture. On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.

\-l, --nr\_loops

Repeat memset invocation this number of times.

\-c, --cycles

Use perf’s cpu-cycles event instead of gettimeofday syscall.

### SUITES FOR *numa*

**mem**

Suite for evaluating NUMA workloads.

### SUITES FOR *futex*

**hash**

Suite for evaluating hash tables.

**wake**

Suite for evaluating wake calls.

**wake-parallel**

Suite for evaluating parallel wake calls.

**requeue**

Suite for evaluating requeue calls.

**lock-pi**

Suite for evaluating futex lock\_pi calls.

## SEE ALSO

[perf(1)](/perf/1.md)
