Thursday, March 22, 2012

Tweaking display set-up on Ubuntu

(Thank you very much, Shinobu!)

I was trying to switch to the Nvidia drivers for Ubuntu 10.04, but was running into the same problem that made me ditch the drivers in the first place: I couldn't get Nvidia's config tool to rotate one of my monitors and leave the other alone.

Thanks to http://zuttobenkyou.wordpress.com/2009/10/04/linux-nvidia-xinerama-guide-rotating-just-one-monitor-in-a-dual-head-setup/ , I was able to switch to Xinerama (an Xorg extension), and rotate one of my monitors.  It involved some manual editing of my /etc/X11/xorg.conf , but nothing too painful.

Here's my /etc/X11/xorg.conf :


# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 1.0  (buildd@yellow)  Fri Apr  9 11:51:21 UTC 2010

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 1024 100 
    Screen      1  "Screen1" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "1"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    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     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL ST2420L"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
    Option         "Rotate" "Left" # for portrait mode
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL 1907FP"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
    #Option         "Rotate" "Left" # for portrait mode
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro FX 4600"
    BusID          "PCI:8:0:0"
    Screen          1
    Option         "RandRRotation" "on"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro FX 4600"
    BusID          "PCI:8:0:0"
    Screen          0
    Option         "RandRRotation" "on"
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "TwinViewXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "DFP-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-1: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option         "Composite" "Enable"
EndSection


I'm sure there's still some cruft in there, but oh well.

Thursday, March 1, 2012

Debugging Google Chrome / Chromium CPU Horror

I hated to admit that using Google Chrome was destroying my productivity on my Ubuntu workstation at work.  The CPU usage was absolutely horrible, and the average load on my machine was usually anywhere from 1.5 to 7.  I know!

My workstation was fairly beefy memory-wise and CPU-wise, and had plenty of disk space.  I disabled everything I could think of, enabled GPU rendering of things, disabled debugging, extensions, ETC. . . .

I exited Chrome and waited for the processes to die.  Usually, I just verify this happened by looking at top; since Chrome usually owns the top spots (no pun intended), I wait until top shows no chrome processes, then I restart it.  This time, I did ps for chrome and chromium processes.  TURNS OUT that after using the Profile Manager[1] extension, several chrome and chromium processes were starting up every time I logged in.  I verified this by looking at "~/.config/autostart", which showed several *.desktop files pointing to Google Chrome and Chromium profiles.

So far, the change is extremely significant.  I recorded no benchmarks along the way, so I am unsure of how much each of my changes improved performance.  However, it appears that all of the extra Chrome processes were what made the biggest difference.

Chalk up another win for blogging about anecdotal information that may or may not lead to misunderstandings about technology.  :-)  You're welcome!


-Ali


[1]  I started using Profile Manager because I wanted to run multiple Chrome sessions in isolation, depending on what I was working on.  For my day-to-day work, I use one profile.  For my volunteer work, which I associate with its own Google Apps account, I use another profile.  For my browser testing, I use another.  THE LIST GOES ON.