How to set up straps to control memory timings on Nvidia GPUs

Memory timings are the second part of the equation which affects the bandwidth and latency of the memory. Without getting too technical, let's imagine we have a location with warehouses, which is our memory chip. Inside it, there are "banks" which are specific warehouses in our analogy. Inside each warehouse there are many rows of shelves, on which boxes lay. Each box would be a memory cell, which can contain either a 0 or a 1 as it's value.

In such example, a person (of which there are multiple) is moving between different warehouses, different rows inside them, reading the values from boxes. The speed at which this person is moving in our location is what we call their memory clock. So, for memory clock at 5000MHz, the person is able to do 5 billion actions per second.

However, there are rules this person must follow. For example, a rule might exist that this person isn't allowed to read contents of two boxes in the same shelf until at least 50 ticks of their clock pass. It is possible to control both the rate of the clock the person uses (which is changing memory clocks) and, in case with some "rules", the amount of "ticks" a "rule" requires.

What are straps?

Straps are pre-defined sets of memory timings that affect the performance of the memory. With too slow (also known as "loose") timings it is possible to reach higher memory frequencies but the performance will commonly be worse compared to optimized "tight" timings.

Changing them has effect similar to what ETHLargement pill does, it increases your mining hashrate, but it works on more cards and gives you a higher degree of control.

Both straps and ETHLargement pill apply to the cards themselves, so if you are using your rig at the same time as you mine on it, other applications (mainly those that load the GPU) may be affected too.

It is also possible that neither pill, nor straps work on your GPU and both simply lead to crashes. In such cases it may be necessary to adjust your overclock settings, you may want to try to test on msOS, or switch to another algorithm and coin which will not be as affected by memory bandwidth.

What cards does this apply to?

Currently memory straps and timing adjustments are supported only on Nvidia 10-series and P10X GPUs also known as "Pascal" architecture, GDDR5 or GDDR5X memory type.

Requirements

  • A Nvidia GPU that supports changing memory timings (10x0 series or P10x model)
  • Miner that has straps support, i.e. Phoenix, T-Rex, Gminer
Troubleshooting Using too high timing values may make your system unstable or lock up, so you should be ready to reboot it manually, at least when setting it up.

Setting up

Advanced config You can pre-configure the coin, pool, wallet in simple mode and then tweak straps in advanced mode.

There is no "Simple" way around this - that's what ETHLargement exists for, so the procedure will take us to "Advanced" configuration mode in each miner.

It is advised to monitor each setting you use for at least half an hour before proceeding forward. Also make sure you keep finding new shares and your mining efficiency stays 100% after you apply these changes and find shares.

Disabling ETHLargement pill

On Windows follow this guide, on msOS simply use the command mpill to toggle it.

Phoenix

For Phoenix, open the advanced configuration and add -straps 4 option.

Example config:

-worker (WORKER)⁣⁣ -pool (POOL:ETHW)⁣ -wal (WALLET:ETHW)⁣.(WORKER) -pass x -eres 0 -log 0 -gbase 0 -proto (AUTO) -straps 4⁣

The order in which straps are configured in Phoenix is as following, from easiest to run (and slowest) to the hardest to run (and the best performing, if it's stable): 4, then 1, then 5, then 2, then 6, and then 3.

It is recommended to gradually change them, spending some time to test the configuration and not rushing it. Make sure it's stable before you move up a level.

Save the changes and check if the card is mining stable, still producing 100% memory efficiency. The hashrate should have increased compared to running the miner without ETHLargement pill and no straps configured.

You can also separate the values for multiple cards in the system by separating them via comma: -straps 4,0,2,6 will apply the timing presets as following: 4 to GPU #0, 0 to GPU #1, 2 to GPU #2, 6 to GPU #3.

T-Rex

For T-Rex, you need to insert "mt":"1", value into the config. Make sure to add somewhere inside the main curly {} brackets, just like any other advanced option. After the option a comma is necessary, unless this option is the last one before the closing curly bracket }.

Example config:

{
"pools": [
{
"user": "(WALLET:ETHW)⁣",
"worker": "(WORKER)⁣",
"url": "(POOL:ETHW)⁣",
"pass": "x"
}
],
"no-nvml": true,
"api-bind-http": "127.0.0.1:4068",
"json-response": true,
"pci-indexing":true,
"retries": 3,
"retry-pause": 5,
"timeout": 500,
"no-watchdog":true,
"algo": "ethash",
"mt":"1",
"exit-on-cuda-error": true,
"exit-on-connection-lost": false
}

In T-Rex the mt option represents memory timings presets, and it changes simply from 0 to 6, where 0 is "no adjustment, using stock", 1 is the slowest (and most stable) while 6 is the hardest to run and fastest. It is recommended to gradually change them, spending some time to test the configuration and not rushing it. Make sure it's stable before you move up a level.

You can also separate the values for multiple cards in the system by separating them via comma: "mt":"4,0,2,6", will apply the timing presets as following: 4 to GPU #0, 0 to GPU #1, 2 to GPU #2, 6 to GPU #3.

Gminer

For Gminer, open the advanced configuration and add option --mt 1.

Example config:

--pass x --algo ethash --server (POOL:ETHW)⁣ --port (AUTO)⁣ --ssl 0 --user (WALLET:ETHW)⁣.(WORKER)⁣ --mt 1

In Gminer the --mt option represents memory timings presets, and it changes simply from 0 to 6, where 0 is "no adjustment, using stock", 1 is the slowest (and most stable) while 6 is the hardest to run and fastest. It is recommended to gradually change them, spending some time to test the configuration and not rushing it. Make sure it's stable before you move up a level.

You can also separate the values for multiple cards in the system by separating them via spaces: --mt 4 0 2 6 will apply the timing presets as following: 4 to GPU #0, 0 to GPU #1, 2 to GPU #2, 6 to GPU #3.

Revolutionize your mining operation with minerstat

It's easy and free to get started. Monitor, manage, and optimize your mining rigs with our powerful platform.

Sign up for free now