OAL Cache Churn Test (Compact 2013)
3/26/2014
This test causes churn of the memory hierarchy and cache systems by mixing operations such as allocation, freedom, and reading and writing on blocks of memory.
To cause the churn, the test uses heuristic algorithms to perform the following tasks:
- Randomly move data into and out of the cache.
- Continuously put pressure on the cache.
- Test whether the VirtualAlloc(…) API returns zero-filled data.
- Test whether data written to the cache matches that read from the cache.
Test Prerequisites
Your device must meet the following requirements before you run this test.
The following table shows the hardware requirements of the OAL Cache Churn Test.
Requirement |
Description |
---|---|
A Windows Embedded CE powered device |
The Windows Embedded CE powered device must support L1 data caching |
The following table shows the software requirements for the OAL Cache Churn Test.
Requirement |
Description |
---|---|
Tux.exe |
Tux test harness, which executes the test |
Kato.dll |
Logging engine, which logs test data |
OalCacheChurn.dll |
OAL Cache Churn Test DLL |
Subtests
The table below lists the subtests included in this test.
SubTest ID |
Description |
---|---|
1 |
Prints the usage message for the OAL Cache Churn test |
1000 |
Churns the cache using the L1 data cache as the data set |
2000 |
Churns the cache using a data set twice the size of the L1 data cache |
3000 |
Churns the cache using a data set four times the size of the L1 data cache |
4000 |
Churns the cache using a data set sixteen times the size of the L1 data cache |
Setting Up the Test
This test has no additional requirements, beyond the standard test environment setup.
Running the Test
The following procedure describes how to run the OAL Cache Churn test.
- At the Windows Embedded Compact Command Prompt, type tux.exe -o -d oalCacheChurn.dll
Note:
Entering this command at the command line runs the basic test by using default values. For information about using the available parameters to modify how this test runs, see Command-Line Parameters for the OAL Cache Churn Test.
This test causes churn of the memory hierarchy and cache systems by mixing operations on blocks of memory, such as allocation, free, reading and writing.
"Syntax"
"tux.exe" -o -d oalCacheChun.dll [-c "[-"runTime" time] [-"cacheSize" size] [-"maxWorkingSets" size] [-"pageSize" page] [-"breakOnFailure"] [-"caliThreshold" time]"]
Command Line Parameters
Command-line parameter |
Description |
---|---|
tux.exe tuxparams |
For information about the command-line parameters of the Tux test harness, see Tux Command-Line Parameters. |
-d oalCacheChurn.dll |
Specifies the DLL to use for the OAL Cache Churn Test. |
-c " … " |
Specifies a list of test-specific parameters that Tux passes to the test DLL. |
-runTime time |
Specifies how long the test runs, using standard test semantics for time. For information about the semantics, see Tux Command-Line Parameters. |
-cacheSize size |
Specifies the size of the cache in bytes. |
-maxWorkingSets size |
Specifies the size of the working set in bytes; overrides cacheSize. |
-pageSize page |
Specifies the page size in bytes. |
-breakOnFailure |
Specifies that the test breaks immediately at the first failure. |
-caliThreshold time |
Designates a very short test time, so that the test can extrapolate how long a full run of the test might take. This information is used internally by the test. The default value is 10 seconds. |
Verifying the Test
When the test completes running, verify that "PASS" appears in the test log for all subtests.
Troubleshooting the Test
The following table shows troubleshooting tips for the OAL Cache Churn test.
Condition |
Solution |
---|---|
Cache size is not valid. |
Choose an array size in KB as a power of two. Make sure the array size or array sizes entered are a positive value. |
Page size is not a multiple of a DWORD. |
The page size should be retrieved from the system. Make sure the page size is correct. The default unit is bytes. |
Could not get runtime. |
Choose a valid, non-negative run time. The default unit is seconds. |