x11perf - X11 server performance test program
x11perf [-option...]
x11perf is solely Xlib based, and accepts the options
listed below: Specifies which display to use. Runs the
tests in synchronous mode. Normally only useful for debugging
x11perf. Runs rectangle tests so that they pack
rectangles right next to each other. This makes it easy to
debug server code for stipples and tiles...if the pattern
looks ugly, you've got alignment problems. Repeats each
test n times (by default each test is run 5 times). Specifies
how long in seconds each test should be run (default
5 seconds). Runs all tests. This may take a while. Runs
all the tests starting from the specified name test1 until
the name test2, including both the specified tests. The
testnames should be one of the options starting from -dot.
(eg) -range line100 will perform the tests from the 100
pixel line test, and go on till the last test, -range
line100,dline10 will do the tests from line100 to dline10.
Generates just the descriptive labels for each test specified.
See x11perfcomp(1X) for more details. Specifies
the foreground color or pixel value to use. Specifies the
background color or pixel value to use. Default number of
clip windows. Specifies the color or pixel value to use
for drawing the odd segments of a DoubleDashed line or
arc. This will default to the bg color. Use specified
raster ops (default is GXcopy). This option only affects
graphics benchmarks in which the graphics function is
actually used. Use specified planemasks (default is ~0).
This option only affects graphics benchmarks in which the
planemask is actually used. Use a visual with depth
planes per pixel (default is the default visual). Use a
visual with of class vclass. vclass can be StaticGray,
GrayScale, StaticColor, PseudoColor, TrueColor, or DirectColor.
(default is the default visual). Specify the repetition
count (Default is number that takes approx. 5 seconds)
Specify the number of sub windows to use in the Window
tests. Default is 4, 16, 25, 50, 75, 100 and 200.
Perform only x11perf Version 1.2 tests using Version 1.2
semantics. Perform only x11perf Version 1.3 tests using
Version 1.3 semantics. Set the save_under window
attribute to True on all windows created by x11perf.
Default is False. Set the backing_store window attribute
to the given value on all windows created by x11perf.
<backing_store_hint> can be WhenMapped or Always. Default
is NotUseful. Dot. 1x1 solid-filled rectangle. 10x10
solid-filled rectangle. 100x100 solid-filled rectangle.
500x500 solid-filled rectangle. 1x1 transparent stippled
rectangle, 8x8 stipple pattern. 10x10 transparent stippled
rectangle, 8x8 stipple pattern. 100x100 transparent
stippled rectangle, 8x8 stipple pattern. 500x500 transparent
stippled rectangle, 8x8 stipple pattern. 1x1
opaque stippled rectangle, 8x8 stipple pattern. 10x10
opaque stippled rectangle, 8x8 stipple pattern. 100x100
opaque stippled rectangle, 8x8 stipple pattern. 500x500
opaque stippled rectangle, 8x8 stipple pattern. 1x1 tiled
rectangle, 4x4 tile pattern. 10x10 tiled rectangle, 4x4
tile pattern. 100x100 tiled rectangle, 4x4 tile pattern.
500x500 tiled rectangle, 4x4 tile pattern. 1x1 transparent
stippled rectangle, 17x15 stipple pattern. 10x10
transparent stippled rectangle, 17x15 stipple pattern.
100x100 transparent stippled rectangle, 17x15 stipple pattern.
500x500 transparent stippled rectangle, 17x15 stipple
pattern. 1x1 opaque stippled rectangle, 17x15 stipple
pattern. 10x10 opaque stippled rectangle, 17x15 stipple
pattern. 100x100 opaque stippled rectangle, 17x15 stipple
pattern. 500x500 opaque stippled rectangle, 17x15 stipple
pattern. 1x1 tiled rectangle, 17x15 tile pattern. 10x10
tiled rectangle, 17x15 tile pattern. 100x100 tiled rectangle,
17x15 tile pattern. 500x500 tiled rectangle, 17x15
tile pattern. 1x1 stippled rectangle, 161x145 stipple
pattern. 10x10 stippled rectangle, 161x145 stipple pattern.
100x100 stippled rectangle, 161x145 stipple pattern.
500x500 stippled rectangle, 161x145 stipple pattern.
1x1 opaque stippled rectangle, 161x145 stipple pattern.
10x10 opaque stippled rectangle, 161x145 stipple
pattern. 100x100 opaque stippled rectangle, 161x145 stipple
pattern. 500x500 opaque stippled rectangle, 161x145
stipple pattern. 1x1 tiled rectangle, 161x145 tile pattern.
10x10 tiled rectangle, 161x145 tile pattern.
100x100 tiled rectangle, 161x145 tile pattern. 500x500
tiled rectangle, 161x145 tile pattern. 1x1 tiled rectangle,
215x208 tile pattern. 10x10 tiled rectangle, 215x208
tile pattern. 100x100 tiled rectangle, 215x208 tile pattern.
500x500 tiled rectangle, 215x208 tile pattern.
1-pixel thin line segment. 10-pixel thin line segment.
100-pixel thin line segment. 500-pixel thin line segment.
100-pixel thin line segment (1 obscuring rectangle).
100-pixel thin line segment (2 obscuring rectangles).
100-pixel thin line segment (3 obscuring rectangles).
10-pixel thin dashed segment (3 on, 2 off). 100-pixel
thin dashed segment (3 on, 2 off). 100-pixel thin doubledashed
segment (3 fg, 2 bg). 10-pixel thin horizontal
line segment. 100-pixel thin horizontal line segment.
500-pixel thin horizontal line segment. 10-pixel thin
vertical line segment. 100-pixel thin vertical line segment.
500-pixel thin vertical line segment. 10-pixel
wide horizontal line segment. 100-pixel wide horizontal
line segment. 500-pixel wide horizontal line segment.
10-pixel wide vertical line segment. 100-pixel wide vertical
line segment. 500-pixel wide vertical line segment.
1-pixel thin (width 0) line. 10-pixel thin line.
100-pixel thin line. 500-pixel thin line. 10-pixel thin
dashed line (3 on, 2 off). 100-pixel thin dashed line (3
on, 2 off). 100-pixel thin double-dashed line (3 fg, 2
bg). 10-pixel line, line width 1. 100-pixel line, line
width 10. 500-pixel line, line width 50. 100-pixel
dashed line, line width 10 (30 on, 20 off). 100-pixel
double-dashed line, line width 10 (30 fg, 20 bg). 10x10
thin rectangle outline. 100-pixel thin vertical line segment.
500-pixel thin vertical line segment. 10x10 wide
rectangle outline. 100-pixel wide vertical line segment.
500-pixel wide vertical line segment. 1-pixel diameter
thin (line width 0) circle. 10-pixel diameter thin circle.
100-pixel diameter thin circle. 500-pixel diameter
thin circle. 100-pixel diameter thin dashed circle (3 on,
2 off). 100-pixel diameter thin double-dashed circle (3
fg, 2 bg). 10-pixel diameter circle, line width 1.
100-pixel diameter circle, line width 10. 500-pixel diameter
circle, line width 50. 100-pixel diameter dashed
circle, line width 10 (30 on, 20 off). 100-pixel diameter
double-dashed circle, line width 10 (30 fg, 20 bg).
10-pixel diameter thin partial circle, orientation and arc
angle evenly distributed. 100-pixel diameter thin partial
circle. 10-pixel diameter wide partial circle. 100-pixel
diameter wide partial circle. 1-pixel diameter filled
circle. 10-pixel diameter filled circle. 100-pixel diameter
filled circle. 500-pixel diameter filled circle.
10-pixel diameter partial filled circle, chord fill, orientation
and arc angle evenly distributed. 100-pixel
diameter partial filled circle, chord fill. 10-pixel
diameter partial filled circle, pie slice fill, orientation
and arc angle evenly distributed. 100-pixel diameter
partial filled circle, pie slice fill. 10-pixel diameter
thin (line width 0) ellipse, major and minor axis sizes
evenly distributed. 100-pixel diameter thin ellipse.
500-pixel diameter thin ellipse. 100-pixel diameter thin
dashed ellipse (3 on, 2 off). 100-pixel diameter thin
double-dashed ellipse (3 fg, 2 bg). 10-pixel diameter
ellipse, line width 1. 100-pixel diameter ellipse, line
width 10. 500-pixel diameter ellipse, line width 50.
100-pixel diameter dashed ellipse, line width 10 (30 on,
20 off). 100-pixel diameter double-dashed ellipse, line
width 10 (30 fg, 20 bg). 10-pixel diameter thin partial
ellipse. 100-pixel diameter thin partial ellipse.
10-pixel diameter wide partial ellipse. 100-pixel diameter
wide partial ellipse. 10-pixel diameter filled
ellipse. 100-pixel diameter filled ellipse. 500-pixel
diameter filled ellipse. 10-pixel diameter partial filled
ellipse, chord fill. 100-pixel diameter partial filled
ellipse, chord fill. 10-pixel diameter partial filled
ellipse, pie slice fill. 100-pixel diameter partial
filled ellipse, pie slice fill. Fill 1-pixel/side triangle.
Fill 10-pixel/side triangle. Fill 100-pixel/side
triangle. Fill 1x1 trapezoid. Fill 10x10 trapezoid.
Fill 100x100 trapezoid. Fill 300x300 trapezoid. Fill 1x1
transparent stippled trapezoid, 8x8 stipple pattern. Fill
10x10 transparent stippled trapezoid, 8x8 stipple pattern.
Fill 100x100 transparent stippled trapezoid, 8x8 stipple
pattern. Fill 300x300 transparent stippled trapezoid, 8x8
stipple pattern. Fill 10x10 opaque stippled trapezoid,
8x8 stipple pattern. Fill 10x10 opaque stippled trapezoid,
8x8 stipple pattern. Fill 100x100 opaque stippled
trapezoid, 8x8 stipple pattern. Fill 300x300 opaque stippled
trapezoid, 8x8 stipple pattern. Fill 10x10 tiled
trapezoid, 4x4 tile pattern. Fill 10x10 tiled trapezoid,
4x4 tile pattern. Fill 100x100 tiled trapezoid, 4x4 tile
pattern. Fill 300x300 tiled trapezoid, 4x4 tile pattern.
Fill 1x1 transparent stippled trapezoid, 17x15 stipple
pattern. Fill 10x10 transparent stippled trapezoid, 17x15
stipple pattern. Fill 100x100 transparent stippled trapezoid,
17x15 stipple pattern. Fill 300x300 transparent
stippled trapezoid, 17x15 stipple pattern. Fill 10x10
opaque stippled trapezoid, 17x15 stipple pattern. Fill
10x10 opaque stippled trapezoid, 17x15 stipple pattern.
Fill 100x100 opaque stippled trapezoid, 17x15 stipple pattern.
Fill 300x300 opaque stippled trapezoid, 17x15 stipple
pattern. Fill 10x10 tiled trapezoid, 17x15 tile pattern.
Fill 10x10 tiled trapezoid, 17x15 tile pattern.
Fill 100x100 tiled trapezoid, 17x15 tile pattern. Fill
300x300 tiled trapezoid, 17x15 tile pattern. Fill 1x1
transparent stippled trapezoid, 161x145 stipple pattern.
Fill 10x10 transparent stippled trapezoid, 161x145 stipple
pattern. Fill 100x100 transparent stippled trapezoid,
161x145 stipple pattern. Fill 300x300 transparent stippled
trapezoid, 161x145 stipple pattern. Fill 10x10
opaque stippled trapezoid, 161x145 stipple pattern. Fill
10x10 opaque stippled trapezoid, 161x145 stipple pattern.
Fill 100x100 opaque stippled trapezoid, 161x145 stipple
pattern. Fill 300x300 opaque stippled trapezoid, 161x145
stipple pattern. Fill 10x10 tiled trapezoid, 161x145 tile
pattern. Fill 10x10 tiled trapezoid, 161x145 tile pattern.
Fill 100x100 tiled trapezoid, 161x145 tile pattern.
Fill 300x300 tiled trapezoid, 161x145 tile pattern. Fill
1x1 tiled trapezoid, 216x208 tile pattern. Fill 10x10
tiled trapezoid, 216x208 tile pattern. Fill 100x100 tiled
trapezoid, 216x208 tile pattern. Fill 300x300 tiled
trapezoid, 216x208 tile pattern. Fill 10-pixel/side complex
polygon. Fill 100-pixel/side complex polygon. Fill
10x10 convex 64-gon. Fill 100x100 convex 64-gon. Fill
10x10 complex 64-gon. Fill 100x100 complex 64-gon. Character
in 80-char line (6x13). Character in 70-char line
(8x13). Character in 60-char line (9x15). 2-byte character
in 40-char line (k14). Character in 80-char line
(Times-Roman 10). Character in 30-char line (Times-Roman
24). Character in 20/40/20 line (6x13, Times-Roman 10,
6x13). 2-byte character in 7/14/7 line (k14, k24). Character
in 80-char image line (6x13). Character in 70-char
image line (8x13). Character in 60-char image line
(9x15). 2-byte character in 40-char image line (k14).
2-byte character in 23-char image line (k24). Character
in 80-char image line (Times-Roman 10). Character in
30-char image line (Times-Roman 24). Scroll 10x10 pixels
vertically. Scroll 100x100 pixels vertically. Scroll
500x500 pixels vertically. Copy 10x10 square from window
to window. Copy 100x100 square from window to window.
Copy 500x500 square from window to window. Copy 10x10
square from pixmap to window. Copy 100x100 square from
pixmap to window. Copy 500x500 square from pixmap to window.
Copy 10x10 square from window to pixmap. Copy
100x100 square from window to pixmap. Copy 500x500 square
from window to pixmap. Copy 10x10 square from pixmap to
pixmap. Copy 100x100 square from pixmap to pixmap. Copy
500x500 square from pixmap to pixmap. Copy 10x10 1-bit
deep plane. Copy 100x100 1-bit deep plane. Copy 500x500
1-bit deep plane. PutImage 10x10 square. PutImage
100x100 square. PutImage 500x500 square. PutImage XY
format 10x10 square. PutImage XY format 100x100 square.
PutImage XY format 500x500 square. PutImage 10x10 square,
MIT shared memory extension. PutImage 100x100 square, MIT
shared memory extension. PutImage 500x500 square, MIT
shared memory extension. PutImage XY format 10x10 square,
MIT shared memory extension. PutImage XY format 100x100
square, MIT shared memory extension. PutImage XY format
500x500 square, MIT shared memory extension. GetImage
10x10 square. GetImage 100x100 square. GetImage 500x500
square. GetImage XY format 10x10 square. GetImage XY
format 100x100 square. GetImage XY format 500x500 square.
X protocol NoOperation. GetAtomName. QueryPointer. GetProperty.
Change graphics context. Create child window
and map using MapSubwindows. Create unmapped window. Map
child window via MapWindow on parent. Unmap child window
via UnmapWindow on parent. Destroy child window via
DestroyWindow parent. Hide/expose window via Map/Unmap
popup window. Move window. Moved unmapped window. Move
window via MoveWindow on parent. Resize window. Resize
unmapped window. Circulate lowest window to top. Circulate
unmapped window to top.
The x11perf program runs one or more performance tests and
reports how fast an X server can execute the tests.
Many graphics benchmarks assume that the graphics device
is used to display the output of a single fancy graphics
application, and that the user gets his work done on some
other device, like a terminal. Such benchmarks usually
measure drawing speed for lines, polygons, text, and so
forth.
Since workstations are not used as standalone graphics
engines, but as super-terminals, x11perf measures window
management performance as well as traditional graphics
performance. x11perf includes benchmarks for the time it
takes to create and map windows (as when you start up an
application); to map a pre-existing set of windows onto
the screen (as when you deiconify an application or pop up
a menu); and to rearrange windows (as when you slosh windows
to and fro trying to find the one you want).
x11perf also measures graphics performance for operations
not normally used in standalone graphics displays, but are
nonetheless used frequently by X applications. Such operations
include CopyPlane (used to map bitmaps into pixels),
scrolling (used in text windows), and various stipples
and tiles (used for CAD and color half-toning,
respectively).
x11perf should be used to analyze particular strengths and
weaknesses of servers, and is most useful to a server
writer who wants to analyze and improve a server. x11perf
is meant to comprehensively exercise just about every X11
operation you can perform; it does not purport to be a
representative sample of the operations that X11 applications
actually use. While it can be used as a benchmark,
it was written and is intended as a performance testing
tool.
As such, x11perf DOES NOT whittle down measurements to a
single "HeXStones" or "MeXops" number. We consider such
numbers to be uninformative at best and misleading at
worst. Some servers which are very fast for certain applications
can be very slow for others. No single number or
small set of numbers are sufficient to characterize how an
X implementation will perform on all applications. However,
by knowledge of your favorite application, you may
be able to use the numbers x11perf reports to predict its
performance on a given X implementation.
That said, you might also want to look at x11perfcomp(1X),
a program to compare the outputs of different x11perf
runs. You provide a list of files containing results from
x11perf, and it lays them out in a nice tabular format.
For repeatable results, x11perf should be run using a
local connection on a freshly-started server. The default
configuration runs each test 5 times, in order to see if
each trial takes approximately the same amount of time.
Strange glitches should be examined; if non-repeatable one
might chalk them up to daemons and network traffic. Each
trial is run for 5 seconds, in order to reduce random time
differences. The number of objects processed per second
is displayed to 3 significant digits, but you'll be lucky
on most UNIX system if the numbers are actually consistent
to 2 digits. x11perf moves the cursor out of the test
window; you should be careful not to bump the mouse and
move it back into the window. (A prize to people who correctly
explain why!!).
Before running a test, x11perf determines what the round
trip time to the server is, and factors this out of the
final timing reported. It ensures that the server has
actually performed the work requested by fetching a pixel
back from the test window, which means that servers talking
to graphics accelerators cannot claim that they are
done, while in the meantime the accelerator is painting
madly.
By default x11perf automatically calibrates the number of
repetitions of each test, so that each should take approximately
the same length of time to run across servers of
widely differing speeds. However, since each test must be
run to completion at least once, some slow servers may
take a very long time, particularly on the window moving
and resizing tests, and on the arc drawing tests.
All timing reports are for the smallest object involved.
For example, the line tests use a PolyLine request to
paint several lines at once, but report how many lines per
second the server can paint, not how many PolyLine
requests per second. Text tests paint a line of characters,
but report on the number of characters per second.
Some window tests map, unmap, or move a single parent window,
but report on how many children windows per second
the server can map, unmap, or move.
The current program is mostly the responsibility of Joel
McCormack. It is based upon the x11perf developed by Phil
Karlton, Susan Angebranndt, Chris Kent, Mary Walker, and
Todd Newman, who wanted to assess performance differences
between various servers. For a general release to the
world, x11perf was rewritten to ease making comparisons
between widely varying machines, to cover most important
(and unimportant) X functionality, and to exercise graphics
operations in as many different orientations and
alignments as possible.
There are no X defaults used by this program.
X(1X), x11perfcomp(1X)
Joel McCormack
Phil Karlton
Susan Angebranndt
Chris Kent
Keith Packard
Graeme Gill
x11perf(1X)
[ Back ] |