SunVTS 3.0 Test Reference Manual

Chapter 21 Multiprocessor Test (mptest)

mptest verifies the functionality of multiprocessing hardware. This test allocates a page of virtual memory for the test, declaring the page shared, locks the page against swapping, and creates threads to each of the processors being tested. Up to 256 processors can be tested by mptest in a CPU.

The processor mask argument can used during test probing. The mptest verifies that the current processor mask matches the argument you entered in the command line or from the GUI/TTYUI.

mptest Options

Figure 21-1 mptest Option Menu

Graphic

The processors that can be tested are listed in the Configuration area of the menu. The multiprocessing test can be enabled or disabled for individual processors on this menu.

The options listed in Table 17-1 can be run alone or concurrently with other options.

Table 21-1 mptest Options

mptest Options 

Description 

Processors 

You can test specific processors by clicking SELECT on the check boxes to enable or disable each processor. A check mark means the processor is enabled for testing; the default setting is all processors enabled. Note that mptest requires at least two enabled processors to test multiprocessing systems.

Lock/Unlock 

Tests the lock/unlock mechanism that guarantees exclusive access to a physical page to one processor. A thread is created at each of the processors. Each processor uses the SPARC atomic instruction ldstub to write to the same shared physical memory page. While one processor is attempting the write, the other processors should be free spinning for their turn. As each processor acquires the lock, it writes an ordinal number to a shared trace buffer using a shared write pointer. After the test cycle is complete, the trace buffer is dumped for analysis.

This test fails and returns an error message if the trace buffer does not contain an equal number of ordinal numbers for each processor. For example, if the specified loop count is 5, the trace buffer should contain five 0s, five negative 1s, five 2s, and so on. 

Data I/O 

Requires two or more threads, each of which locks onto one of the processors. Each processor, in turn, writes data to a temporary file that has been mapped to the physical address. The modified data is immediately read by other processors being tested. This test hangs and fails if the processors do not recognize the expected data. 

Shared Memory 

A shared memory buffer is divided into a number of contiguous chunks, one for each of the CPUs participating in the test. Each CPU is assigned a unique chunk based upon its ID (1-N). This subtest has two parts. 

First, each CPU locks and writes data to its data chunk. Identical data is written for each CPU. Then each CPU reads and compares the information on its data chunk with that of another CPU. 

If two CPUs do not confirm consistent data, the test fails and returns an error message. If that happens, testing stops and this test is run again in verbose mode to return more detailed information. 

Cache Consistency 

Requires two or more processors to access and write to the same physical address. This test verifies that a change in physical address by one processor is confirmed by another. 

If two processors do not confirm consistent data, the test continues to run, but the Pass Count in the SunVTS status window stops incrementing. If this happens, stop testing and run the test again in verbose mode for a more detailed picture of the problem. 

mptest Test Modes

Table 21-2 mptest Test Modes

Test Mode 

Description 

Connection Test 

The Connection test checks the current processors on the system with the original processor mask. An error is reported if they do not match. The original processor mask is set during probing, which shows the processors on system during the probe. The status of each selected processor is checked by procsesor_bind.

Functional Test 

This test mode verifies that the current processor mask is the same as that from the command line, or the same as that from the GUI/TTYUI 

 Functional mode through SyMON

If you invoke SunVTs through SyMON, the following Functional test description applies: This test verifies that the current processor mask is the same as that from the command line, or the same as that from the GUI/TTYUI 

mptest Command Line Syntax

/opt/SUNWvts/bin/mptest standard_arguments -o M=0+1+2+3...,NL,ND,NS,NC,omask=hexidecimal_number

Table 21-3 mptest Command Line Syntax

Arguments Description 

NL

Disable the Lock/Unlock subtest. 

ND

Disable the Data I/O subtest. 

NS

Disable the Shared Memory subtest. 

NC

Disable Cache Consistency subtest 

M=0+1+2+3...

Use 0, 1, 2 to specify the processors to test.

omask=hexidecimal_number

Original mask of processors. Bit 0 represents processor 0 and bit 1 represents processor 1. An example: 03333320


Note -

64-bit tests are located in the sparcv9 subdirectory: /opt/SUNWvts/bin/sparcv9/testname. If a test is not present in this directory, then it may only be available as a 32-bit test. For more information refer to "32-Bit and 64-Bit Tests".


mptest Error Messages

Table 21-4 mptest Error Messages

 

Error Message 

Probable Cause(s) 

Recommended Action 

6000

mp lock failed

Faulty processor. 

If the problem persists, call your authorized Sun service provider. 

6001

All subtests are disabled

Parameter error. 

Enable at least one subtest. 

6002

thr_setconcurrency error

System load is too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

6003

Error in creating threads: name

System load is too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

6004

thr_join() thread number error status: number

System load is too heavy. 

Reduce the system load. 

System error  

If the problem persists, call your authorized Sun service provider. 

6005

Processor Mask Error: Expect number Was number

Some processors are disappeared from processor mask. 

If the problem persists, call your authorized Sun service provider. 

6006

Failed in system call uadmin, errno = number, sys_errlist = name

System load is too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

6007

Failed in function getnextbitmsk!

System error. 

If the problem persists, call your authorized Sun service provider. 

6008

Processor Mask Error: check mask number cpu mask number

Some processors disappeared from the processor mask. 

If the problem persists, call your authorized Sun service provider. 

6009

Failed to get shared memory, err = name

System load is too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

6010

Failed to create shared memory, err = name

System load is too heavy. 

Reduce the system load. 

System error 

If the problem persists, call your authorized Sun service provider. 

6011

Shared Memory Subtest: Process number, Processor number, *curr_add number curr_addr number, cpu_mask number failed

System load too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

6014

Failed on read & compare: Processor number, read=number, exp=number

 

 

6016

Not a MP system!

Faulty Processor. 

 

Do not run mptest on this system.

 

8000

Failed to open name

Not enough disk space. 

Allocate disk space. 

Permission error. 

Check directory/file permissions. 

System error. 

If the problem persists, call your authorized Sun service provider. 

8001

Failed to create a page

System load too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

8002

mmap address space to device

System load too heavy. 

Reduce the system load. 

System error. 

If the problem persists, call your authorized Sun service provider. 

8003

mlock error. name

Processor error. 

Isolate the bad processor. 

8005

All subtests are disabled

Parameter error: None subtest is selected. 

Re-enter command line correctly: Select at least one subtest. 

8006

Can not run mptest! You need to enable at least two processors

Parameter error You have selected less than two processors for testing. 

Re-enter command line correctly; Select at least two processors. 

8008

alloc error:error_message

 system load too heavy or system error. Reduce the system load. If the problem persists, call your authorized Sun service provider.

8010

CPU number number: Expected ID number, was number

Some processors do not appear in the processor mask. 

 If the problem persists, call your authorized Sun service provider.
 8014Processor number is not online or does not exist Non-existant processor was specified on the command line. Processor selected is off-line. Check the command line and option file. If the problem persists, contact your authorized Sun service provider.