mongoperf

On this page

Synopsis

mongoperf is a utility to check disk I/O performance independently of MongoDB.

It times tests of random disk I/O and presents the results. You can use mongoperf for any case apart from MongoDB. The mmf true mode is completely generic. In that mode it is somewhat analogous to tools such as bonnie++ (albeit mongoperf is simpler).

Specify options to mongoperf using a JavaScript document.

Run mongoperf from the system command line, not the mongo shell.

Options

  • mongoperf

  • --help `,` `-h`

    • Returns information on the options and use of mongoperf .
  • <jsonconfig> ``

    • mongoperf accepts configuration options in the form of a file that holds a JSON document. You must stream the content of this file into mongoperf, as in the following operation:
mongoperf < config

In this example config is the name of a file that holds a JSON document that resembles the following example:

{
  nThreads:<n>,
  fileSizeMB:<n>,
  sleepMicros:<n>,
  mmf:<bool>,
  r:<bool>,
  w:<bool>,
  recSizeKB:<n>,
  syncDelay:<n>
}

See the Configuration Fields section for documentation of each of these fields.

Configuration Fields

  • mongoperf. nThreads
    • Type: Integer.

Default: 1

Defines the number of threads mongoperf will use in the test. To saturate your system’s storage system you will need multiple threads. Consider setting nThreads to 16 .

  • mongoperf. fileSizeMB
    • Type: Integer.

Default: 1 megabyte (i.e. 10242 bytes)

Test file size.

  • mongoperf. sleepMicros
    • Type: Integer.

Default: 0

mongoperf will pause for the number of specified sleepMicros divided by the nThreads between each operation.

  • mongoperf. mmf
    • Type: Boolean.

Default: false

Set mmf to true to use memory mapped files for the tests.

Generally:

  • when mmf is false , mongoperf tests direct, physical, I/O, without caching. Use a large file size to test heavy random I/O load and to avoid I/O coalescing.

  • when mmf is true , mongoperf runs tests of the caching system, and can use normal file system cache. Use mmf in this mode to test file system cache behavior with memory mapped files.

  • mongoperf. r

    • Type: Boolean.

Default: false

Set r to true to perform reads as part of the tests.

Either r or w must be true .

  • mongoperf. w
    • Type: Boolean.

Default: false

Set w to true to perform writes as part of the tests.

Either r or w must be true .

  • mongoperf. recSizeKB
    • New in version 2.4.

Type: Integer.

Default: 4 kb

The size of each write operation.

  • mongoperf. syncDelay
    • Type: Integer.

Default: 0

Seconds between disk flushes. mongoperf.syncDelay is similar to --syncdelay for mongod.

The syncDelay controls how frequently mongoperf performs an asynchronous disk flush of the memory mapped file used for testing. By default, mongod performs this operation every 60 seconds. Use syncDelay to test basic system performance of this type of operation.

Only use syncDelay in conjunction with mmf set to true .

The default value of 0 disables this.

Use

mongoperf < jsonconfigfile

Replace jsonconfigfile with the path to the mongoperf configuration. You may also invoke mongoperf in the following form:

echo "{nThreads:16,fileSizeMB:10000,r:true,w:true}" | mongoperf

In this operation:

  • mongoperf tests direct physical random read and write io’s, using 16 concurrent reader threads.

  • mongoperf uses a 10 gigabyte test file.

Consider using iostat , as invoked in the following example to monitor I/O performance during the test.

iostat -xtm 1