Closed Bug 1001482 Opened 10 years ago Closed 10 years ago

run performance benchmarks on OS X SSD machine

Categories

(Infrastructure & Operations :: RelOps: General, task)

x86
macOS
task
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: arich, Assigned: dividehex)

References

Details

We want to run some performance benchmarks on the OS X windows machine with an SSD to make sure that performance is stable and as expected.  Taras suggested using http://freecode.com/projects/fio since it's cross platform.
Blocks: 992378
Fio seems like a nice tool for benchmarking but request is not well defined.  Fio is a framework for building benchmarking tests.  We will need far more detail as to the benchmarks you are looking for here.  Could you provide a defined job file for this?

http://git.kernel.dk/?p=fio.git;a=blob_plain;f=HOWTO;hb=HEAD
Based on info from bug 1001481 I set up a 70/30 profile to run:

; write speed at 70/30
[8k7030test]

; OS X doesn't support mutexes, so we use threading
thread

directory=/tmp/fio
direct=1
rw=randrw
refill_buffers
norandommap
randrepeat=0
ioengine=posixaio
bs=8k
rwmixread=70
iodepth=16
numjobs=16
runtime=60
group_reporting
size=512m

Unfortunately it looks like the posixaio engine is non-functional on OSX (and the windows and linuxaio engines obviously don't work since it's the wrong type of system):

# fio 8k7030test.fio 
8k7030test: (g=0): rw=randrw, bs=8K-8K/8K-8K/8K-8K, ioengine=posixaio, iodepth=16
...
fio-2.1.7
Starting 16 threads
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
8k7030test: Laying out IO file(s) (1 file(s) / 512MB)
fio: pid=7683, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=8451, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=8707, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=6403, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=8195, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=6659, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=4867, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=6915, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=5635, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=7427, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=6147, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=5891, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=7171, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=5123, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=7939, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
fio: pid=5379, err=-1/file:engines/posixaio.c:213, func=xfer, error=Unknown error: -1
Assertion failed: (pool), function sfree, file smalloc.c, line 347.
fio(653,0x10eb1d000) malloc: *** error for object 0x7f9081402920: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6


And interestingly, if you try to run the job multiple times in a row, you start getting the error:

error: maximum number of jobs (4) reached.

When it ran 16 just fine the first time.  Rebooting the system lets you run 16 jobs again, so I suspect something some resource is being tied up with the failure.
Depends on: 992364
I tried running this on my personal laptop (mavericks, not lion) just to check and see if it was something weird with the mini, and I got the same errors.

Oh, and an added note on the mini, if you run it again with 4 jobs (by bumping down the number in the config), it again fails and then will only let you run with ONE job. Definitely issues with the code.
This machine is getting put back into the production pool with its original disk.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.