diglloyd Tools (dlt) User Manual

Last updated: 01 July 2008
© 2006-2008 diglloyd, Inc.  All Rights Reserved.

IMPORTANT: Use the Mac OS X “Safari” browser to read this document, or links to files will not work correctly.

Table of Contents

Setup
    Mounting the install volume
    Easy install
    Manual install

Introduction
    Legal and contact
    Conventions used in this document
          diglloyd Tools
          Text Style

Usage hints
     Common mistakes
     Activity Monitor
     Using diglloyd Tools in Terminal
     Stopping a Test
     Getting help

Commands
     Table of commands
          run-stress-test
          test-compute-speed
          help
     Table of command options

Command Syntax Primer

Example output

Setup

The diglloydTools program is a Universal Binary, which means it will run on either PowerPC-based Macs or Intel-based Macs. As of July 2008, it also a 64-bit application, and will run on either 32-bit or 64-bit systems (Mac OS X 10.4 or 10.5).

Be sure to read All About Mac Pro Memory, even if your computer is not a Mac Pro.

Mounting the install volume

If you’re reading this file from the installation volume, you’ve already done this step. See Easy Install below.

Double-click the “diglloydTools_install.dmg” file to cause it to be mounted as a volume icon on your desktop. An icon should appear on your desktop that looks like this:

DiskTester volume icon

Easy Install

Open the diglloydTools_Install disk, then double click the install icon (click the image below to open it in the Finder, then double-click):

install icon

 

Manual Install

Manual install with the script

1. Open a Terminal window. Terminal is found in the Utilities folder within the Applications folder (/Application/Utilities). You will see something like the following:

Last login: Fri Sep 1 20:34:16 on ttyp2
Welcome to Darwin!
llcG5:~ lloyd$

2. Type the commands shown in blue:

llcG5:~ lloyd$ cd /Volumes/diglloydTools_Install/
llcG5:/Volumes/diglloydTools_Install lloyd$ ./install

You should see output similar to this:

Installing diglloydTools...
							

3. After step 2, you may begin using diglloydTools (dlt). Assuming you have a volume named “Macintosh HD”, try:

llcG5:~ lloyd$ dlt run-stress-test

Manual installation

1. Drag the “diglloydTools” folder (found inside “install-items”) anywhere on your hard disk. Add the appropriate path to your “.bash_profile” (or the appropriate file for whatever shell you use).

Uninstalling

The automated install performs the following actions:

  • create a folder “diglloyd” inside /Applications/Utilities;
  • creates a “diglloydTools” folder inside “diglloyd”;
  • adds a single line to “.bash_profile” in your home directory.

1. Drag the /Applications/Utilities/diglloyd/diglloydTools folder into the trash (if diglloydTools is the only diglloyd program you have installed, you can drag the /Applications/Utilities/diglloyd folder into the trash instead).

2. [Optional, not required]. Remove the following line from your “.bash_profile” file:

export PATH=/Applications/Utilities/diglloyd/diglloydTools:...

Introduction

Diglloyd Tools™ (“dlt”) offers several commands for testing computer performance. More commands are planned for future versions, hence the name diglloydTools. You can:

  • run a “stress test” for as long as you like, designed to maximize use of CPU, memory and disk resources;
  • test memory bandwidth and system performance;

Quick start

You can use the predefined scripts to run most of the commands found in:

/Applications/Utilities/diglloyd/diglloydTools

You can also double-click the desired script below to select it in the Finder, then double-click it:

 

scripts     
scripts

 

Legal and contact

Distribution or copying without the express written permission of diglloyd, Inc is prohibited.  No warranty, either express or implied is given and you use this program entirely at your own risk.  Please read the License Agreement.

For inquiries regarding licensing dlt, please see diglloyd.com/diglloyd/software.

To contact us, please see the contact page.

Please include “software inquiry” in the subject of your email.  Due to a large volume of spam, messages may be inadvertently ignored without an appropriate subject.

Conventions used in this document

diglloyd Tools

When referring to the program as a product, it is written “diglloyd Tools ”.  When referring to it as the command typed when invoking it, it is written “dlt”.  Entering “diglloyd Tools ” as the command name in Terminal will not work.

Text style

All commands and output as typed or viewed in Terminal while using diglloydTools are shown in a fixed-width font.  Commands that you are to enter are additionally shown like this.

In the command shown below, “llcG5:~ lloyd$” is the command prompt (waiting for you, the user, to enter a command), and the text to be entered by the user is “ cd /Applications”.

llcG5:~ lloyd$ cd /Applications

Usage hints

This section describes using diglloyd Tools.

Common mistakes

Typos

The most common user error is typing a command incorrectly. For example, you might type “run-speedtest” instead of the correct “run-speed-test”. You will get an error something like this:

llcMP:~ lloyd$ dlt run-speedtest
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 9:13:23 AM PT
Physical memory (MB): 16384

ERROR: unknown cmd [-40003], msg ="Unknown command: "run-speedtest"

Running other programs while testing

Commands that time performance (eg test-compute-speed) should be run without other programs running. File sharing and similar services should be stopped. Otherwise, the system is sharing its resources with those programs even as the tests run. On Mac OS X, many programs continue to run, and you might need to perform several runs to get a sense for the variability of the results. Rebooting prior to a long-running test is a good idea also; it clears out any “stale” programs that might impact test results, or be taking up memory.

Checking memory status

On Macs with ECC (error correcting code) memory (the Mac Pro), you can check for memory errors using About this Mac => More Info => Memory. If the status is not displayed as “OK”, this means that the memory module(s) are not reliable under the current load. With really bad memory, this might be the case anytime. Failures are generally caused by heat; testing at 100°F will induce failures in some modules, though Apple modules are generally extremely reliable—you get what you pay for. See All About Mac Pro Memory.

Activity Viewer

Activity Monitor

Activity Viewer (Applications => Utilities => Activity Monitor) can be a helpful tool to observe system activity, though running it can affect speed test results.

The most useful items are the “%CPU” column (click on it to sort by max/min CPU usage), the “Disk Activity” tab, and the “CPU Monitor” window.  When you start Activity Monitor, use the “Window” menu to show the windows seen below:

Activity Viewer

Using diglloyd Tools in Terminal

diglloydTools is supplied as a command-line utility named “dlt” (not “diglloydTools”), which must be run in a Terminal window (Applications => Utilities => Terminal). See the command line primer for help on understanding command lines.

To run the run-stress-test command,   enter it at the prompt (you can specify additional options if desired).

llcMP:~ lloyd$ dlt run-stress-test

dlt will start running. The first phase is setup; the amount of non-pageable memory is determined. This can take up to several minutes, but is a crucial step, because it ensures that memory can be tested at full speed, as opposed to being “swapped” to and from the hard disk (virtual memory). In the example below, diglloydTools was able to allocate 14GB of real memory for testing.

diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 8:55:12 AM PT
Physical memory (MB): 16384

********************************** Stress Test *********************************
System memory: 16GB
Test duration: 1h
CPU percent: 100% (per cpu core)
Num CPU threads: 4
Memory per thread (requested): 3.80GB

==> Determining amount of non-pageable memory
(this phase can take several minutes before stress-testing begins)


Checking for virtual memory paging for 15.2GB
No paging detected for 3.80GB (good)
No paging detected for 7.60GB (good)
No paging detected for 11.4GB (good)
*** PAGING DETECTED after 15.2GB ***
Allocated 3.80GB per thread (15.2GB) for 4 threads, but paging detected.
Paging detected, reducing memory usage and retrying with 98% of previous value.

...

Checking for virtual memory paging for 14.0GB
No paging detected for 3.50GB (good)
No paging detected for 7.01GB (good)
No paging detected for 10.51GB (good)
No paging detected for 14.0GB (good)
Allocated 3.50GB per thread (14.0GB) for 4 threads, reverifying paging behavior...
Done determining pageable memory.
NOTE: Avoid starting applications while tests are running; system response will be very sluggish.				

After diglloydTools has allocated memory for testing, the testing phase begins, with one “thread” for each CPU core. By default, the test runs for one hour; you can use the --duration option to specify a longer or shorter duration. Keep in mind that the computer will not be usable during the testing (very sluggish). To stop the test, use control-C (see below).

While testing, diglloydTools emits progress: the elapsed time (left column), the amount of memory tested, and the memory “bandwidth” or speed at which memory can be copied. Double that figure for real-world memory bandwidth (as opposed to “marketing” bandwidth).

Memory usage per thread: 3.50GB
Volumes to test: none

Creating 4 CPU thread(s) at 100% utilization, each consuming 3588.9MB for a total memory use of 14.0GB
1 2 3 4  
 
Starting...
1 2 3 4  started.
Waiting for all threads to start...
All threads were started.
Thread 0 started OK.
Thread 1 started OK.
Thread 2 started OK.
Thread 3 started OK.
4 cpu threads started successfully using a total of 14.0GB of memory, to be accessed continually.

=====> Use ctrl-C to stop <=====
Note: speeds denote memory copying speed (memmove); multiply by 2 for total bandwidth.

10s: 14355.7MB @ 2869 MB/sec (best)
20s: 14355.7MB @ 2829 MB/sec
30s: 14355.7MB @ 2810 MB/sec
40s: 28711.5MB @ 2809 MB/sec
50s: 14355.7MB @ 2811 MB/sec
60s: 14355.7MB @ 2694 MB/sec
Maximum bandwidth so far: 2869 MB/sec
70s: 14355.7MB @ 2763 MB/sec
^C
Caught signal 2 (SIGINT)
Program should respond within a few seconds.

Memory bandwidth: 2869 MB/sec
Waiting for tasks to exit...4...4...4...4...4...4...4...4...4...4...4...4...4...4...3...3...3...2...2...2...done.
Test duration: 76.1 seconds...

Command "run-stress-test" executed in 381.32 seconds.
				

Stopping a test

To stop an in-progress test, use control-c (you must be in the Terminal window with the running dlt process).  Hold down the control key and press 'c'.   The control key is the key labeled “control” on the standard Apple US keyboard; it’s right next to the “option” key.

A control-c sends a “signal” to dlt that it needs to quit.  You should see a message similar to this one:

^C
Caught signal 2 (SIGINT)
Program should respond within a few seconds.

Waiting for tasks to exit...32...25...24...18...done.
Test duration: 4.0 seconds...

Command "run-stress-test" executed in 15.88 seconds.

In most cases, dlt will quit within a second or two, though it might take longer in some cases. You can also force dlt to quit using Activity Monitor by clicking the Quit Process button after first selecting dlt:

Quit

Getting Help

Invoking dlt with no commands will show help. You can also use dlt help all.

llcG5:~ lloyd$ dlt
llcMP:~ lloyd$ dlt
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 9:11:01 AM PT
Physical memory (MB): 16384

Available commands:
run-stress-test     Consume CPU time, memory bandwidth, and I/O bandwidth.
test-compute-speed  Test CPU speed.
help                display usage and examples for the available commands

To see examples for a specific command, use "dlt help " where  is the name of the command.
To see detailed help for all commands, use 'help all'

To get help on a particular command, use the 'help' command:

llcG5:/ lloyd$ dlt help run-stress-test

The output will look like this. If that is hard to understand, please see the Command Syntax Primer.

llcMP:~ lloyd$ dlt help run-stress-test
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 9:21:05 AM PT
Physical memory (MB): 16384

SUMMARY

run-stress-test: Consume CPU time, memory bandwidth, and I/O bandwidth.

SYNTAX

run-stress-test
    [--output-level|-l <terse|normal|verbose>]              "normal"
    [--percent-cpu|-p <percent>]                            "100%"
    [--num-threads|-n <num>]                                "4"
    [--memory-per-thread|-m <size[b|K|M|G]>]                "3891MB"
    [--volumes|-v <all|[,]*>]     "all"
    [--read-only|-r]                                        "true"
    [--duration|-d <num>[S|M|H]>]                          "1H"
    

EXAMPLES

dlt run-stress-test

dlt run-stress-test --percent-cpu 50 --memory-per-thread 512MB --volumes "Boot,Master,Scratch,Backup-Int4X,tm,Spare,diglloydMirro" --read-only 

Command "help" executed in 0.05 seconds.

Command summary (with examples)

This section describes the commands and what they do.

Table of Commands
Command Discussion

run-stress-test

 

Maximize CPU usage, memory bandwidth and (optionally) disk use.

This command is designed to put severe stress on the computer, more than you could ever produce running any normal application. If you have installed additional memory, disks or add-in cards, this command will cause the machine to run as hot as it possibly can. If the machine crashes during the test, a faulty component is present, such as memory, that cannot cope with the excess heat. See Checking Memory Status.

You can also specify a lower level of stress using the --percent-cpu option, as well as altering the memory usage and disk access (no disk access by default). With no arguments, run-stress-test will use all available CPU power and the maximal amount of memory possible.

The use of this command can result in elevated system activity (by the Mac OS X kernel) even after the command has exited. This is due in large part to the use of very large chunks of memory.

Options: --output-level, --percent-cpu, --num-threads, --memory-per-thread, --volumes, --read-only, --duration
Operands(s): none

Examples:

dlt run-stress-test

dlt run-stress-test --output-level verbose --percent-cpu 33 --num-threads 3 --memory-per-thread 128M --volumes IntBackup --read-only --duration 4h

test-compute-speed

Test how fast the machine can perform certain tasks.

Options: --output-level,--num-threads, --buffer-size
Operands(s): none

Examples:

dlt test-compute-speed

dlt test-compute-speed --num-threads 8 --buffer-size 256M

help

Print out help for available commands. See Getting Help.

Options: none — specify the name of a command
Operand(s): the name of one command

Examples:

dlt help test-compute-speed

dlt help run-stress-test

Option summary

Each option has a long name, which must be prefixed by "--", and a short name, which must be a single dash "-" followed by a letter.

An option in square brackets[] is optional.   The pipe "|" character indicates that you should choose one of the values.   Angle brackets<> indicate that a value must be supplied.

Table of Options
Command Discussion
[--output-level|-l <terse|normal|verbose>] Controls the verbosity of the output. This has little effect in dlt, but is included for completeness and consistency with DiskTester and other diglloyd software products.

Applies to: run-stress-test, test-compute-speed

[--percent-cpu|-p <percent>]

Specify a percent of CPU usage, from 1 to 100, per thread.

Applies to: run-stress-test

[--num-threads|-n <num>] The number of threads to create. A thread is like a program within a program. On a quad-core machine, there are for “cores”, each of which can run independently of the others, sort of like 4 computers in one. Four (4) threads can fully utilize all the CPU power of a quad-core machine.

Applies to: run-stress-test, test-compute-speed

[--memory-per-thread|-m <size[b|K|M|G]>] The amount of memory that each thread will use.

Applies to: run-stress-test

[--volumes|-v <all|<volume-name>[,<volume-name>]*>] The volumes upon which disk I/O will be performed. The special value “all” means all volumes. Disk I/O includes reading all the readable files on the volume, as well as writing and reading to a temporary file (unless the --read-only option is specified).

Applies to: run-stress-test

[--read-only|-r] Data will only be read, not written. If not specified, data is both read and written to a temporary file on each volume specified by the --volumes option. User files are never opened as writeable, so they can never be written to by the program.

Applies to: run-stress-test

[--duration|-d <num>[S|M|H]>]

The amount of time the command should run. For example, the value “1H” means one hour, the value “20M” means 20 minutes, and the value “45s” means 45 seconds. Upper/lower case is not significant.

Note that short durations might mean that the disk access tasks never get a chance to actually read files; they might take some time simply to collect list of files to read, and that might take longer than the duration.

Applies to: run-stress-test

[--buffer-size|-b <size[b|K|M|G]>] The amount of memory that each thread will use.

Applies to: test-compute-speed

Example output

run-stress-test
test-compute-speed
help

run-stress-test

llcMP:~ lloyd$ dlt run-stress-test
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 8:55:12 AM PT
Physical memory (MB): 16384

********************************** Stress Test *********************************
System memory: 16GB
Test duration: 1h
CPU percent: 100% (per cpu core)
Num CPU threads: 4
Memory per thread (requested): 3.80GB

==> Determining amount of non-pageable memory
(this phase can take several minutes before stress-testing begins)


Checking for virtual memory paging for 15.2GB
No paging detected for 3.80GB (good)
No paging detected for 7.60GB (good)
No paging detected for 11.4GB (good)
*** PAGING DETECTED after 15.2GB ***
Allocated 3.80GB per thread (15.2GB) for 4 threads, but paging detected.
Paging detected, reducing memory usage and retrying with 98% of previous value.

...

Checking for virtual memory paging for 14.0GB
No paging detected for 3.50GB (good)
No paging detected for 7.01GB (good)
No paging detected for 10.51GB (good)
No paging detected for 14.0GB (good)
Allocated 3.50GB per thread (14.0GB) for 4 threads, reverifying paging behavior...
Done determining pageable memory.
NOTE: Avoid starting applications while tests are running; system response will be very sluggish.

Memory usage per thread: 3.50GB
Volumes to test: none

Creating 4 CPU thread(s) at 100% utilization, each consuming 3588.9MB for a total memory use of 14.0GB
1 2 3 4  
 
Starting...
1 2 3 4  started.
Waiting for all threads to start...
All threads were started.
Thread 0 started OK.
Thread 1 started OK.
Thread 2 started OK.
Thread 3 started OK.
4 cpu threads started successfully using a total of 14.0GB of memory, to be accessed continually.

=====> Use ctrl-C to stop <=====
Note: speeds denote memory copying speed (memmove); multiply by 2 for total bandwidth.

10s: 14355.7MB @ 2869 MB/sec (best)
20s: 14355.7MB @ 2829 MB/sec
30s: 14355.7MB @ 2810 MB/sec
40s: 28711.5MB @ 2809 MB/sec
50s: 14355.7MB @ 2811 MB/sec
60s: 14355.7MB @ 2694 MB/sec
Maximum bandwidth so far: 2869 MB/sec
70s: 14355.7MB @ 2763 MB/sec
^C
Caught signal 2 (SIGINT)
Program should respond within a few seconds.

Memory bandwidth: 2869 MB/sec
Waiting for tasks to exit...4...4...4...4...4...4...4...4...4...4...4...4...4...4...3...3...3...2...2...2...done.
Test duration: 76.1 seconds...

Command "run-stress-test" executed in 381.32 seconds.

test-compute-speed

llcMP:~ lloyd$ dlt test-compute-speed
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 9:35:04 AM PT
Physical memory (MB): 16384

Test size = 128MB...

Chunk Size K  MB/sec
           1   198.8
           2   207.8
           4   212.6
           8   214.8
          16   215.6
          32   215.8
          64   215.5
         128   215.9
         256   215.9
         512   215.9
        1024   215.4
Best chunk size: 128K

This computer has 4 processing units.
Testing using 4 threads simultaneously...
thread 0: 211.9...214.8
thread 1: 207.0...215.6
thread 2: 210.7...216.1
thread 3: 203.2...215.9
Aggregate rate: 862MB/sec


Command "test-compute-speed" executed in 15.42 seconds.


help

llcMP:~ lloyd$ dlt
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 9:36:42 AM PT
Physical memory (MB): 16384

Available commands:
run-stress-test     Consume CPU time, memory bandwidth, and I/O bandwidth.
test-compute-speed  Test CPU speed.
help                display usage and examples for the available commands

To see examples for a specific command, use "dlt help " where  is the name of the command.
To see detailed help for all commands, use 'help all'

llcMP:~ lloyd$ dlt help all
diglloydTools 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved.
Tuesday, July 1, 2008 9:36:58 AM PT
Physical memory (MB): 16384

-------------------------------- run-stress-test -------------------------------
SUMMARY

run-stress-test: Consume CPU time, memory bandwidth, and I/O bandwidth.

SYNTAX

run-stress-test
    [--output-level|-l <terse|normal|verbose>]              "normal"
    [--percent-cpu|-p <percent>]                            "100%"
    [--num-threads|-n <num>]                                "4"
    [--memory-per-thread|-m <size[b|K|M|G]>]                "3891MB"
    [--volumes|-v <all|[,]*>]     "all"
    [--read-only|-r]                                        "true"
    [--duration|-d <num>[S|M|H]>]                          "1H"
    

EXAMPLES

dlt run-stress-test

dlt run-stress-test --percent-cpu 50 --memory-per-thread 512MB --volumes "Boot,Master,Scratch,Backup-Int4X,tm,Spare,diglloydMirro" --read-only 


------------------------------ test-compute-speed ------------------------------
SUMMARY

test-compute-speed: Test CPU speed.

SYNTAX

test-compute-speed
    [--output-level|-l <terse|normal|verbose>]              "normal"
    

EXAMPLES

dlt test-compute-speed


------------------------------------- help -------------------------------------
SUMMARY

help: display usage and examples for the available commands

SYNTAX

help
    [|all]

EXAMPLES

dlt help run-stress-test

dlt help test-compute-speed


Command "help" executed in 0.06 seconds.