# nvidia-drivers that supports Performance Levels in TwinView

## DeIM

Hi,

I have two displays with:

nvidia GT 430

nvidia-drivers 290.10

xorg-server 1.11.2-r2

When only one display is active, everything is OK, have Performance Level 0 most time.

After switching to TwinView or Xinerama. It sets Performance Level 2 and never goes below maximal performance settings.

I've tried:

```
Section "Device"

    Identifier     "Device0"

    Driver         "nvidia"

    VendorName     "NVIDIA Corporation"

    BoardName      "GeForce GT 430"

    Option "RegistryDwords" "PowerMizerLevel=0x3"

#    Option "RegistryDwords" "PerfLevelSrc=0x3333"

EndSection

Section "Device"

    Identifier     "Device1"

    Driver         "nvidia"

    VendorName     "NVIDIA Corporation"

    BoardName      "GeForce GT 430"

    BusID          "PCI:1:0:0"

    Screen          1

    Option "RegistryDwords" "PowerMizerLevel=0x3"

#    Option "RegistryDwords" "PerfLevelSrc=0x3333"

EndSection
```

but no succeed. I don't understand, why my big primary display can work with 50MHz Graphics Clock and with small peripheral display together must run on maximum 700Mhz. Even level 1 would be better than this.

----------

## Gusar

Do a little experiment - force the card into the lowest level:

```
Option "RegistryDwords" "PerfLevelSrc=0x2222; PowerMizerLevelAC=0x3; PowerMizerLevel=0x3"
```

I'm curious to see if you'll get the same thing I do.

----------

## DeIM

TY for reply.

If the thing you've gotten is "No change", I got the same   :Very Happy: 

Still works on highest level   :Confused: 

Edit: Even on one display -> something sucks -> see next post   :Wink: 

Full xorg.conf:

```
# nvidia-settings: X configuration file generated by nvidia-settings

# nvidia-settings:  version 290.10  (buildmeister@swio-display-x86-rhel47-07.nvidia.com)  Wed Nov 16 18:46:42 PST 2011

Section "ServerLayout"

    Identifier     "Layout0"

    Screen      0  "Screen0" 0 0

    InputDevice    "Keyboard0" "CoreKeyboard"

    InputDevice    "Mouse0" "CorePointer"

    Option         "Xinerama" "0"

EndSection

Section "Files"

EndSection

Section "InputDevice"

    # generated from data in "/etc/conf.d/gpm"

    Identifier     "Mouse0"

    Driver         "mouse"

    Option         "Protocol"

    Option         "Device" "/dev/input/mice"

    Option         "Emulate3Buttons" "no"

    Option         "ZAxisMapping" "4 5"

EndSection

Section "InputDevice"

    # generated from default

    Identifier     "Keyboard0"

    Driver         "kbd"

EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid

    Identifier     "Monitor0"

    VendorName     "Unknown"

    ModelName      "..."

    HorizSync       30.0 - 83.0

    VertRefresh     56.0 - 75.0

    Option         "DPMS"

EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid

    Identifier     "Monitor1"

    VendorName     "Unknown"

    ModelName      "..."

    HorizSync       30.0 - 82.0

    VertRefresh     56.0 - 76.0

    Option         "DPMS"

EndSection

Section "Device"

    Identifier     "Device0"

    Driver         "nvidia"

    VendorName     "NVIDIA Corporation"

    BoardName      "GeForce GT 430"

Option "RegistryDwords" "PerfLevelSrc=0x2222; PowerMizerLevelAC=0x3; PowerMizerLevel=0x3"

#    Option "RegistryDwords" "PowerMizerLevel=0x3"

#    Option "RegistryDwords" "PerfLevelSrc=0x3333"

EndSection

Section "Device"

    Identifier     "Device1"

    Driver         "nvidia"

    VendorName     "NVIDIA Corporation"

    BoardName      "GeForce GT 430"

    BusID          "PCI:1:0:0"

    Screen          1

Option "RegistryDwords" "PerfLevelSrc=0x2222; PowerMizerLevelAC=0x3; PowerMizerLevel=0x3"

#    Option "RegistryDwords" "PowerMizerLevel=0x3"

#    Option "RegistryDwords" "PerfLevelSrc=0x3333"

EndSection

Section "Screen"

    Identifier     "Screen0"

    Device         "Device0"

    Monitor        "Monitor0"

    DefaultDepth    24

    Option         "TwinView" "1"

    Option         "TwinViewXineramaInfoOrder" "DFP-0"

    Option         "metamodes" "DFP: 1680x1050_60 +0+0, CRT: 1280x1024_60 +1680+26"

    SubSection     "Display"

        Depth       24

    EndSubSection

EndSection

Section "Extensions"

    Option         "Composite" "Disable"

EndSection
```

----------

## DeIM

Tried sth. on my own:

===Single Display===

```
Option         "RegistryDwords" "PerfLevelSrc=0x3333; PowerMizerLevelAC=0x2; PowerMizerLevel=0x2"

base: PL0, PM: Desktop, glxgears: PL2, PM: Maximum Performance

Option         "RegistryDwords" "PerfLevelSrc=0x2222; PowerMizerLevelAC=0x2; PowerMizerLevel=0x2"

base: PL2, PM: Desktop, glxgears: PL2, PM: Maximum Performance
```

===2 TwinView Displays===

```
Option         "RegistryDwords" "PerfLevelSrc=0x3333; PowerMizerLevelAC=0x2; PowerMizerLevel=0x2"

base: PL2, PM: Desktop, glxgears: PL2, PM: Maximum Performance

Option         "RegistryDwords" "PerfLevelSrc=0x3333; PowerMizerLevelAC=0x3; PowerMizerLevel=0x3"

base: PL2, PM: Desktop, glxgears: PL2, PM: Maximum Performance

Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333; PowerMizerLevelAC=0x3; PowerMizerLevel=0x3"

base: PL0, PM: Desktop->Maximum Performance, glxgears: PL0, PM: Maximum Performance

Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333"

base: PL2, PM: Maximum Performance, glxgears: PL2, PM: Maximum Performance

Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333; PowerMizerLevelAC=0x2; PowerMizerLevel=0x2"

base: PL1, PM: Desktop, glxgears: PL1, PM: Maximum Performance
```

There must be some setting to act in TwinView as in single display - PerfLevelSrc=0x???? Could anybody share?

----------

## Gusar

 *DeIM wrote:*   

> Still works on highest level  

 

Aww, too bad. I *can* force the card into the lowest level. If you could too, you'd see why the nvidia driver does what it does. And btw, nouveau does the same thing. A Phoronix article says so does radeon, but Phoronix is a source you have to double check, which I haven't yet.

Bottom line, these drivers don't do this for fun. They do it because otherwise there's not enough video bandwidth to drive the displays. As I was able to see first hand on my machine.

BTW, your xorg.conf is a mess. A whole bunch of redundant stuff in there, and things that could clash. Never, ever use nvidia-xconfig. So are you even sure all your options are applied as you think they are? They could be, but with an xorg.conf like that I wouldn't make any bets.

----------

## DeIM

TY, could you please post link to that Phoronix article?

Yeah, I know it's messy - it's what nvidia-xconfig made but I'm using another config otherwise. This is for testing only.

(e.g. I'm dissabling dri and dri2 cause it's not need with nvidia-drivers.)

I'm pretty sure X'll live with sth. like this:

```
Section "ServerLayout"

    Identifier     "Layout0"

    Screen      0  "Screen0" 0 0

    Option         "Xinerama" "0"

EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid

    Identifier     "Monitor0"

    VendorName     "Unknown"

    ModelName      "..."

    HorizSync       30.0 - 83.0

    VertRefresh     56.0 - 75.0

    Option         "DPMS"

EndSection

Section "Device"

    Identifier     "Device0"

    Driver         "nvidia"

    VendorName     "NVIDIA Corporation"

    BoardName      "GeForce GT 430"

Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333; PowerMizerLevelAC=0x3; PowerMizerLevel=0x3"

EndSection

Section "Screen"

Option "TwinView" "1"

Option "metamodes" "DFP: 1680x1050_60 +0+0, CRT: 1280x1024_60 +1680+26"

    Identifier     "Screen0"

    Device         "Device0"

    Monitor        "Monitor0"

    DefaultDepth    24

    Option         "TwinViewXineramaInfoOrder" "DFP-0"

EndSection
```

----------

## Gusar

Even that is redundant. All you need is:

```
Section "Device"

    Identifier     "Device0"

    Driver         "nvidia"

    Option         "TwinView" "1"

    Option         "TwinViewXineramaInfoOrder" "DFP-0" 

EndSection
```

And optionally the metamodes line, as I see you've aligned the displays at the bottom instead of the default top alignment.

The Phoronix article: http://www.phoronix.com/scan.php?page=news_item&px=MTA1MDA. The nouveau stuff regarding multiple displays is this commit: http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=fd6e1523041cdfe935568e12a556ce367a37cb05

----------

## DeIM

TY!, xorg.conf works exactly you've said  :Wink: 

But back to power levels dilema. I understand sometimes lower power levels implicates slow reply, unstability or crashes. But I'm working on lowest level with no problems at all. Even the resolution limit is exceeded cca 3-times. If somebody decided stability is priority to go with, it's OK. But I'll be really happy if I can choose sth other than default.

Best for me would be act as if there is one display < 1920x1200 = dynamically change PL on load.

I would appreciate possibility to change PL manually from inside X too.

I really don't know what registry options could do this job, even if they exists.

----------

## DeIM

And/or howto disable peripheral monitor via command line?

I've spent some time searching web and reading man pages related to nvidia-settings.

It's like hard-core puzzle: "Yeah, it supports changing attributes from command line".

I've found hardly one usable attribute - to manipulate cursor shadow  :Confused: 

----------

## DeIM

I'm confused now. Could somebody explain to me why on another computer it can work?

Differences:

Two identical displays (primary by DVI-D <-> DVI-D, secondary by DVI-I <-> D-Sub) (Their resolution is even bigger)

GT 440

Intel-based

Instead of TwinView is used Xinerama (maybe just cosmetic  :Wink:  )

----------

## Ant P.

 *Gusar wrote:*   

>  *DeIM wrote:*   Still works on highest level  :? 
> 
> Aww, too bad. I *can* force the card into the lowest level. If you could too, you'd see why the nvidia driver does what it does. And btw, nouveau does the same thing. A Phoronix article says so does radeon, but Phoronix is a source you have to double check, which I haven't yet.

 

radeon will still allow forcing low-power mode on multihead, it just can't do ondemand clock adjustment with it.

----------

