Performanceproblem VMWare / Windows 7 / KDE (openSUSE 13.2) gelöst

Das Windows, das bei meinem Rechner dabei war, betreibe ich unter VMWare. Der Rechner selbst läuft unter Linux.

Leider hatte ich ziemliche Performance-Probleme beim Wechsel zwischen der VM und den anderen laufenden Programmen. Alleine auf einen anderen virtuellen Desktop zu wechseln, auf dem nur ein einziges Programm lief, hat gefühlt ewig gedauert und das System komplett lahm gelegt.

An sich fühlte sich das an, als würde das komplette RAM Inhalt auf die Festplatte ausgelagert. Wobei das eigentlich kaum möglich ist. Der Rechner hat 8 GB und die VM nur 4 GB. Da sollte eigentlich Luft sein. Von daher war mir immer schleierhaft, warum das so ein Problem ist. Zumal ich mir auch sicher bin, dass früher™ das Problem nicht so extrem in dieser Form bestanden hat.

Heute habe ich dann zufällig gemerkt, dass diese totale Systemüberlastung sogar auftritt, wenn ich mittels Alt+F2 unter KDE die Eingabezeile zum Schnellstart von Programmen einblende. Und die kann nun wirklich nicht viel Speicher fressen. Ein „top“ hat mir verraten, dass der Window Manager „kwin“ – zusätzlich zum VMWare Player – dann jede Menge CPU braucht. Und darüber bin ich drauf gekommen, wo das Problem liegen könnte.

Es sind die sogenannten „Arbeitsflächen-Effekte“! Also die Animationen beim Wechsel zwischen virtuellen Desktops, beim in den Vordergrund-Bringen von Fenstern etc. Und in der Tat, auf älteren Rechnern hatte ich die meist nicht aktiviert, deswegen hatte ich das Problem dort nicht.

Die gute Nachricht ist, man muss die nicht komplett deaktivieren, man kann sie mit der Tastenkombination Shift+Alt+F12 auch temporär deaktivieren bevor man VMWare startet. Und mit derselben Kombination wieder aktivieren, wenn VMWare beendet ist. Problem gelöst 🙂KDE Arbeitsflächen-Effekte

Amarok 2 Datenmodell und noch ein Abfrage-Skript

Das Datenmodell von Amarok 2 gibt es als SVG im GIT-Repository unter dieser URL: http://quickgit.kde.org/index.php?p=amarok.git&a=blob_plain&f=docs%2FamarokTables.svg.

Und weil ich mir gerne CDs fürs Auto brenne, die möglichst 2 Alben enthalten sollten, hier ein Skript, das mit die Alben des aktuellen Jahres nach Gesamtlänge sortiert (bei verschiedenen Interpreten klappt das so natürlich nicht):

SELECT
  artists.name as artists,
  albums.name as albums,
  years.name as years,
  sec_to_time(SUM(tracks.length)/1000 ) as Duration
FROM tracks
LEFT JOIN artists ON artists.id = tracks.artist
LEFT JOIN albums ON albums.id = tracks.album
LEFT JOIN years ON years.id = tracks.year
where
  years.name = year(now())
group by
  artists.name, albums.name, years.name
ORDER by
  SUM(tracks.length), artists.name, albums.name

KDE Update auf 4.7 hat eine Stolperfalle

Heute habe ich auf meiner Opensuse 11.4 ein Update auf KDE 4.7 gemacht, nachdem ich die Ankündigung der Fertigstellung bei heise.de gelesen hatte.

Flugs das KDE:/Release:/47 Repository zu den Paketquellen hinzugefügt und ein Dist-Upgrade auf dieses gemacht:

zypper dup –from KDE

Dabei fragte das Tool an, was mit dem Paket „k3b-codecs“ passieren sollte, von dem es für das 4.7er KDE wohl noch keine Entsprechung in den Paketquellen gab. Ich habe die Variante gewählt, das veraltete k3b Paket aus 4.6 zu behalten.

Der Rest lief easy, einmal abmelden und neu anmelden und schon lief KDE 4.7.

ABER: der Kalender war leer. Das hat mich etwas geschockt. Komischerweise liess sich in dem leeren Kalender auch nichts neu anlegen.

Ursache war, dass der Standardkalender nicht mehr selektiert gewesen ist. So wie im Screenshot muss es aussehen, nach dem Update war der Haken einfach nur weg.

Standardkalender aktiv gesetzt

Letztlich also kein Drama. Aber im Netz finden sich andere Hilfesuchende, die deswegen wohl schon ein Downgrade auf die 4.6 gemacht haben.

Der ganze Stress wäre nicht nötig, wenn beim Upgrade einfach dieser kleine Haken erhalten bliebe…

Amarok 2 Datenbank abfragen

Tja, neuer Rechner, neues OS, neue Version von Amarok. Jetzt 2.4 statt 1.4.

Leider wird die Datenbank nicht mehr in sqlite gespeichert (~/.kde4/share/apps/amarok/collection.db), sondern in mysql embedded (~/.kde4/share/apps/amarok/mysqle).

Früher habe ich meine Queries mit wxSQLite+ abgesetzt, wie in Amarok-Datenbank per Skript abfragen beschrieben.

Ich hab schon nach einem Ersatz gesucht, aber ich finde nur Entwickler-Informationen zur Entwicklung mit MySQL embedded, aber keine allgemeinen Tools, mit dem ich beliebige Datenbanken abfragen könnte.

Gibt es nicht sowas wie einen Query Analyzer für MySQL embedded? MySQL Workbench 5.2.31 will sich offenbar immer mit einem Server verbinden.

Nachtrag: in der Tat braucht man einen Server. Das ist der ganz normale mysqld, der nur mit den richtigen Parametern aufgerufen werden muss. Die Lösung habe ich auf unixboard.de gefunden: Amarok2 MySQL Datanbank auslesen oder verbinden
Was dort nicht steht: man darf Amarok nicht laufen haben. Außerdem muss man wissen, wie man den Server wieder beendet. Um mir das nicht immer merken zu müssen, habe ich mir ein kleines Skript geschrieben, welches das alles verpackt:


#!/bin/sh
cd $(kde4-config --path data | cut -f1 -d:)/amarok
/usr/bin/mysqld_safe 
  --defaults-file=$(pwd)/my.cnf 
  --default-storage-engine=MyISAM 
  --datadir=$(pwd)/mysqle 
  --socket=$(pwd)/sock 
  --skip-grant-tables &

sleep 2

if (test -S $(pwd)/sock) ; then

cat

Das Datenbank-Schema hat sich auch ein wenig geändert gegenüber der 1.4er Version. Eine Liste aller Alben eines Jahres bekommt man jetzt z.B. mit

select distinct
    artists.name as Artist
    ,albums.name as Album
from tracks
left join artists on artists.id = tracks.artist
left join albums on albums.id = tracks.album
left join years on years.id = tracks.year
where
    years.name = '2011'
order by
    artists.name
    ,albums.name

Intel Sandy Bridge Grafikfehler bei openSUSE 11.4 mit KDE 4.6

Bei einer frischen Installation von openSUSE 11.4 hatte ich unter KDE 4.6 einige hässliche Grafikfehler. Die obersten Einträge in den Ausklappmenüs waren unleserlich.

Irgendwie fehlten mir die passenden Suchbegriffe, erst nach 2 Tagen Recherche fand ich den korrekten Hinweis auf http://lslezak.blogspot.com/2011/04/installing-latest-intel-graphics-driver.html.

Es reicht, von der Intel-Seite den Treiber 2.15.0 herunterzuladen, zu kompilieren und zu installieren. Danach einmal X neu starten und alles ist super.

Auf der Intel-Seite hatte ich zwar auch schon geguckt, aber dort sind jede Menge Komponenten angegeben ohne eine klare Anleitung was man davon wirklich braucht und wie man’s installiert. In der Tat wollte ich nicht einfach per Trial and Error rumprobieren und womöglich X komplett zerschießen. Aber es ist ja gar nicht nötig.

Amarok-Datenbank per Skript abfragen

Ich benutze mit Begeisterung Amarok, um meine Musiksammlung auf dem PC zu verwalten und anzuhören. Aber abgesehen von den Features, die das Programm schon liefert, kann man die darunterliegende Datenbank mit eigenen SQL Abfragen auswerten.

Hier ein schönes Beispiel, wenn man mal für ein Erscheinungsjahr alle seine Alben wissen will:

$ sqlite3 ~/.kde/share/apps/amarok/collection.db
sqlite> SELECT DISTINCT
artist.name, album.name, year.name, genre.name
FROM tags
LEFT JOIN year ON year.id = tags.year
LEFT JOIN genre ON genre.id = tags.genre
LEFT JOIN artist ON artist.id = tags.artist
LEFT JOIN album ON album.id = tags.album
WHERE year.name = '2009'
ORDER BY artist.name, album.name;

Oder aber eine Liste aller Alben inkl. deren Länge:

sqlite> SELECT
  artist.name, album.name,
  SUM(tags.length)/60.0
FROM tags
LEFT JOIN artist ON artist.id = tags.artist
LEFT JOIN album ON album.id = tags.album
group by
  artist.name, album.name
ORDER by
  artist.name, album.name

Oder eine Liste aller Alben bei denen mindestens ein Song noch nie gespielt wurde:

sqlite> SELECT DISTINCT
         artist.name,
         album.name
FROM     tags
         LEFT JOIN album
         ON       album.id=tags.album
         LEFT JOIN artist
         ON       artist.id=tags.artist
         LEFT JOIN statistics
         ON       statistics.url      =tags.url
              AND statistics.deviceid = tags.deviceid
where
  statistics.playcounter is null
order by
         artist.name,
         album.name

Oder eine Liste aller Alben, von denen noch kein einziger Song gespielt wurde:

select DISTINCT
  artist.name, album.name
from album
JOIN tags   ON album.id=tags.album
JOIN artist ON artist.id=tags.artist
WHERE
  not EXISTS (
    select 1
    from tags
    join statistics on statistics.url=tags.url
                   and statistics.deviceid=tags.deviceid
    WHERE tags.album = album.id and statistics.playcounter >= 0
  )
ORDER BY
  artist.name, album.name

dbus Session Daemon wird nicht gestartet

Nachdem ich vor kurzem ein frisches OpenSUSE 11 installiert hatte, gab es Probleme mit dem Programm beagle-search. Es meckerte, dass der dbus Session Daemon nicht liefe.

Diverse Suchen mit diversen Suchbegriffen lieferten immer nur Webseiten, auf denen entweder die Grundlagen von dbus beschrieben wurden oder wo jemand Probleme hatte mit dbus Daemons, die sich nicht mehr beendeten.

Geholfen wurde mir dann hier http://www.linuxforen.de/forums/showthread.php?t=257479

Dabei habe ich ein interessantes Feature kennengelernt: dass man ausführbare Skripte in ~/.kde/env benutzen kann, um Session-weite Umgebungsvariablen zu setzen. Das Verzeichnis kann man einfach anlegen, wenn es noch nicht existiert.