Monitoraggio delle performance del kernel Linux giorno per giorno

Phoronix ha lanciato un progetto per cui ogni giorno viene automaticamente scaricata e compilata l’ultima versione del kernel Linux disponibile e vengono eseguiti i benchmark del Phoronix Test Suite. I risultati vengono pubblicati su phoromatic.com. È un progetto interessante che permette di monitorare facilmente i progressi nelle performance del kernel. Un esempio dei grafici disponibili è il seguente:

In cui vengono mostrati il numero di secondi necessari per effettuare un encoding di un file audio da WAV a FLAC. I risultati mostrati sono relativi all’ultimo mese di sviluppo del kernel, che incidentalmente coincide con il completamento della release 2.6.33.

Phoromatic è un progetto piuttosto interessante, vale la pena di perderci qualche minuto a settimana per tenere d’occhio cosa combinano gli sviluppatori da un punto di vista sensibile per l’utente finale. I risultati dei test sono disponibili all’indirizzo http://www.phoromatic.com.

Posted in linux. No Comments »

Prestazioni kernel 32 bit, 32 bit con PAE e 64 bit

Sul mercato consumer desktop e laptop sono ormai ampiamente diffusi sistemi con processori a 64 bit associati a dotazioni di memoria che superano facilmente i 4GiB. Per sfruttare completamente la RAM è necessario un kernel a 32 bit che supporti il PAE o un kernel a 64 bit. Fino a qualche tempo fa gli utilizzatori di Linux potevano essere restii ad utilizzare la versione a 64 bit per la mancanza di driver o software proprietario (un esempio tipico era Adobe Flash).

Tranne alcuni casi particolari in generale i kernel a 64 bit possono tranquillamente essere utilizzati sulle macchine domestiche. In effetti a parte le perdite di performance un kernel a 32 bit funziona perfettamente su una macchina a 64 bit.

Oggi, 30 dicembre, Phoronix ha rilasciato i risultati dei suoi test che mettono a confronto le prestazioni di Ubuntu con kernel a 32 bit, 32 bit con PAE e 64 bit su una macchina con processore Intel Core 2 Duo T9300 e 4GiB di RAM. I 4 GiB di RAM sono completamente utilizzabili da tutte e tre le versioni del kernel – anche se quella a 32 bit senza PAE ne riporta solo 3, in quanto un GiB è riservato dal kernel e non è utilizzabile lato utente.  I risultati del test mettono quindi in luce le differenze di prestazioni soprattutto per le applicazioni di “number crunching”, dove il pieno utilizzo dei registri a 64 bit del processore permette al kernel 64 bit di avere prestazioni anche molto superiori rispetto alla versione a 32 bit. Il test completo può essere consultato sull’articolo di Phoronix.

La sostanza del test, per chi non avesse voglia di leggerlo integralmente, è che le prestazioni del kernel 32 bit e 32 bit con PAE sono sostanzialmente identiche, mentre il kernel 64 bit ha prestazioni migliori degli altri due. Le migliori prestazioni del kernel 64 bit sono apprezzabili, come è lecito aspettarsi, soprattutto in applicazioni computazionalmente intensive, come ray tracing o utilizzo di crittografia. Un interessante outsider è il benchmark relativo al server http Apache: sui kernel a 32 bit il test ha ottenuto una media di 470 richieste al secondo servite, mentre con il kernel a 64 bit una media di quasi 8000 richieste al secondo. Questa differenza di un fattore 20 mi fa pensare che o il test è fallato o c’è qualche problema di configurazione nella versione di Apache pacchettizzata per 32 bit. Sarebbe interessante approfondire la questione. In breve: il kernel a 64 bit è utilizzabilissimo sulle macchine domestiche che lo supportano ed è quasi un must sui server su cui si desidera ottenere migliori prestazioni in modo “gratuito”.

I risultati completi del test sono disponibili sul sito di Phoronix.

Ottenere di più da KRunner in KDE 4.x

KMenu icon by Oxygen KDE Team KRunner è l’interfaccia di KDE per avviare i programmi. Lo si avvia da tastiera di default con la combinazione Alt+F2. Oltre a essere un modo rapido per avviare software KRunner include diversi “fornitori di servizio” che gli permettono di eseguire molte altre attività differenti.

  1. File management. Basta specificare un percorso nel filesystem (ad. es.: /home/nomeutente ) per aprire il file manager predefinito, di default Dolphin.
  2. Web. Digitando un normale indirizzo web KRunner dà la possibilità di avviare direttamente il browser predefinito sulla pagina specificata.
  3. Google search. Per effettuare una ricerca su Google è sufficiente digitare gg:<parole chiave> seguito da Invio. KDE avvierà il browser predefinito sulla pagina di ricerca di Google relativa ai termini di ricerca inseriti. Per cercare immagini su Google images digitare images:<parole chiave>.
  4. Conversione unità di misura. Per convertire da una unità di misura all’altra digitare <valore> <unità di misura> in <unità di misura>. Ad esempio: 5 liters in gallons.
  5. Power management. KRunner si interfaccia con PowerDevil, il power manager di KDE, e permette di utilizzarne le funzionalità con le seguenti parole chiave:
    • power profile. Elenca i profili di gestione energetica disponibili e permette di scegliere quale attivare.
    • screen brightness. Elenca i livelli di luminosità dello schermo disponibili.
    • screen brightness n. Imposta la luminosità dello schermo al n%.
    • suspend. Mostra le opzioni per lo standby/ibernazione.
    • power governor. Permette di selezionare la politica per la gestione del clock della CPU
  6. Calcolatrice. Qualunque comando che inizia con “=” viene interpretato come una espressione matematica da calcolare. Ad esempio per calcolare la radice quadrata di 32+42 bisogna inserire =sqrt(3^2+4^2). La calcolatrice supporta funzioni come sqrt(), sin(), cos(), tan() e molte altre.
  7. E-mail. È sufficiente digitare il nome di un contatto della propria rubrica di KMail per avviare la finestra per inviargli una e-mail.

Linux on Dell Studio 15 1557

This is my new laptop: a Dell Studio 15 1557 with a Intel i7 720QM CPU.

Short review

Here’s a very short review. First, the cons:

  • There are no LEDs on the keyboard. No LED for caps lock, no LED for HD activity, nothing;
  • by default the function keys (F1..F12) work as multimedia key (switch off WiFi, mute, volume up and so on), but this setting can be changed in the BIOS;
  • there is no numeric keypad. Usually on 15” laptops using the Fn key some keys can be used as numeric keypad, but this is not the case: there is simply no way to have a numeric keypad. This baffled me and it is annoying, especially on Windows. On the italian keyboard layout there is no “~” or “È” key, so we type them using the numeric keypad and tapping Alt+0126 or Alt+0200. Since there is no numeric keypad I have to copy&paste those characters. I’ll look for an explanation from Dell;
  • the fast CPU and graphic card mean a lot of heat: the system idles at 50 °C and can easily reach 70 °C under stress.

Pros:

  • the chassis is sturdy;
  • the touchpad supports multitouch, allowing for some cool gestures when using Windows;
  • the HD is huge (500GB);
  • the i7 CPU is as fast as it can get on laptops, looking at 8 columns for CPU load in the task manager gives a warm fuzzy feeling (the i7 720QM is a quad-core CPU with hyperthreading, so  the OS thinks that there are 8 CPUs);
  • the graphic card isn’t the fastest one available for laptops, but still I was able to play Mirror’s Edge with high settings;
  • I can virtualize Windows XP (and use IBM DB2 on it) on Windows Vista while browsing with Firefox and chatting and installing OpenOffice and still the average CPU load is at 30%;
  • the DDR3 RAM is fast;
  • did I say that it is fast?

Linux on Dell Studio 15 1557

I wanted to install Linux on it, my distro of choice being Kubuntu 9.10 Karmic Koala, but plain Ubuntu should run flawlessy too. The good news is that all the hardware is supported: WiFi, SD reader, ATI card, audio, everything. The bad news is that you have to fiddle a little to make it work. Here’s some gotchas:

  1. Don’t install any proprietary driver while using the Live CD. The Broadcom STA driver, needed to make the wireless work, made my system freeze. And if it freezes while it’s modifying the partition table you’ll be very, very sorry. Just install the system without doing anything fancy.
  2. The wireless card is reported by lspci as 05:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01). If you have internet access via Ethernet just use the Hardware Drivers manager to install the Broadcom STA wireless driver. If you don’t have internet access use Synaptic (on Ubuntu) or KPackageKit (on Kubuntu) or apt-cdrom (everywhere) to add the installation cd-rom as software source and then use the Hardware Drivers manager.
  3. To make the audio work edit as root /etc/modprobe.d/alsa-base.conf and add this line:
    options snd-hda-intel model=dell-m6

    and then execute:

    sudo alsa force-reload

And that’s it, enjoy your Linux :)

(Not so) fun fact: when rebooting the system the first time, after installing Kubuntu, the system didn’t boot, even the BIOS screen didn’t show up. It just beeped four times and then turned off. Dell’s manual says that “four beeps = possible motherboard damage”, which just doesn’t make sense. However I tried again after a couple of minutes and it worked. I don’t know why and I hope it doesn’t happen again.

Accelerare Firefox 3 ripulendo il suo database

Firefox icon by everaldo.comCon Firefox 3.0 è stata introdotta la “Awesome Bar”: la barra degli indirizzi intelligente che può essere utilizzata come navigatore della cronologia.

Questa funzionalità fa un uso piuttosto intenso dei database intensi di Firefox, e con il tempo può diventare piuttosto lenta. È possibile però “ripulire” il database per ritornare ad avere buone performance. Per farlo:

  1. Dal menu Tools (Strumenti) selezionate Error Console (Console degli errori)
  2. Nella casella Code (Codice) inserite la seguente istruzione su un unico rigo:
    Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
  3. Cliccate su Evaluate (Valuta): l’interfaccia grafica si bloccherà per alcuni secondi mentre i database di Firefox vengono riorganizzati.

Al termine dell’operazione la awesome bar di Firefox dovrebbe tornare ad avere buone prestazioni.

Usare SSH come server proxy

Web icon by everaldo.comPuò capitare che si disponga di un server a cui si dispone di accesso via SSH e si desideri utilizzarlo come server proxy per la navigazione sul web.

Il client SSH rende semplice questa operazione: permette di mettere in ascolto sulla macchina locale un server proxy SOCKS che rigirerà al server remoto tutte le richieste di connessione all’interno del “tunnel” SSH.

Supponendo di voler mettere in ascolto sulla porta locale 8080 il server proxy, che la macchina remota abbia IP 10.0.0.1 e che il nome utente remoto sia mrossi il comando da lanciare è:

ssh -D 8080 -Nf mrossi@10.0.0.1

(se il nome utente attuale è uguale a quello sulla macchina remota si può tralasciare la stringa mrossi@).

Una breve spiegazione degli switch utilizzati con SSH:

  • -D 8080: indica la volontà di creare un proxy SOCKS in ascolto sulla porta 8080 sull’indirizzo di loopback (127.0.0.1). Opzionalmente si può specificare qualunque indirizzo locale su cui mettersi in ascolto;
  • -N: indica a SSH che non si desidera eseguire alcun comando;
  • -f: fa sì che subito dopo l’autenticazione SSH vada in background.

Una volta eseguito il comando si può configurare il proprio browser per utilizzare il proxy SOCKS in ascolto su 127.0.0.1:8080. Se il vostro browser è Firefox potete utilizzare FoxyProxy per gestire facilmente i proxy.

Chi sta accedendo al disco? Monitorare l’uso dell’I/O.

HardDisk icon by everaldo.com Una feature molto comoda del task manager di Windows è quella che permette di visualizzare quali processi stanno scrivendo su disco e in quale misura. È possibile ottenere queste informazioni anche su Linux. Un metodo rapido per ottenere un’informazione del genere è eseguire da root:

echo 1 > /proc/sys/vm/block_dump

Eseguendo dmesg sarà possibile avere un colpo d’occhio di quali processi stiano effettuando burst di scritture, con un output simile a questo:

[  409.805443] firefox-bin(4288): WRITE block 25335048 on sda7
[  409.805468] firefox-bin(4288): WRITE block 25335112 on sda7
[  409.805493] firefox-bin(4288): WRITE block 25335136 on sda7
[  409.805520] firefox-bin(4288): WRITE block 25335176 on sda7
[  409.805589] kjournald2(729): WRITE block 17053608 on sda7
[  409.805608] kjournald2(729): WRITE block 17053616 on sda7
[  409.805620] kjournald2(729): WRITE block 17053624 on sda7
[  409.805631] kjournald2(729): WRITE block 17053632 on sda7
[  409.805642] kjournald2(729): WRITE block 17053640 on sda7
[  409.810454] kjournald2(729): WRITE block 17053648 on sda7
[  409.963898] firefox-bin(4288): dirtied inode 3198 (places.sqlite-journal) on sda7
[  410.004105] pdflush(23): WRITE block 16922864 on sda7
[  410.004257] pdflush(23): dirtied inode 10220 (plasma_theme_default.data) on sda7
[  410.004291] pdflush(23): WRITE block 36789872 on sda7
[  410.004310] pdflush(23): WRITE block 36789880 on sda7

Piccola nota: pdflush è il demone che si occupa di scrivere su disco le scritture rinviate dal kernel per motivi di performance, kjournald(2) si occupa di mantenere aggiornato il journal del filesystem ed è normale che siano spesso presenti. Questo output tuttavia non è di comoda lettura. Una alternativa è data dal software iotop, installabile con Synaptic, aptitude o il packet manager della distribuzione che preferite. Avviandolo con:

iotop -o

Si otterrà un output di questo tipo:
che mostra i quattro processi che hanno effettuato operazioni di I/O nel periodo di campionamento. In questo caso sono il già citato pdflush e wget che hanno effettuato delle scritture, mentre svn ha effettuato una lettura.

Le colonne di iotop mostrano nell’ordine:

  • il PID del processo;
  • la velocità di lettura nel periodo di campionamento (di default 1 secondo);
  • la velocità di scrittura nel periodo di campionamento;
  • il tempo impiegato per lo swapping;
  • il tempo atteso per l’accesso all’I/O;
  • il nome del processo e i suoi argomenti.

Il manuale di iotop indica gli switch utili per un uso più mirato di questo ottimo strumento.

Kubuntu 9.04 Jaunty Jackalope

Desktop icon by everaldo.com Il 23 Aprile è stato rilasciato Ubuntu 9.04 Jaunty Jackalope. Le novità introdotte sono elencate sul wiki di Ubuntu e su quello di Kubuntu. Le principali condivise da tutti i “gusti” di (X/K/Ed)Ubuntu sono:

Per quanto riguarda Kubuntu le novità principali sono:

Problemi

Vi sono però già una serie di bug noti, elencati sulla pagina di rilascio di Kubuntu e su quella di Ubuntu. Quelli che mi hanno toccato direttamente sono due (forse tre).

Connessione alla rete (bug 330811, 339313 e 348275)

Il widget per la connessione di rete è sostanzialmente rotto: litiga con il software per la gestione delle password KWallet, non permette di connettersi alle reti WPA2, non accetta le password per le reti WEP.

La rete che sto utilizzando al momento utilizza WEP (e ammetto che sia male, evitate di farlo anche voi!). Il widget per la connessione di rete si rifiutava di accettare la password. Il “trucco” è stato quello di inserire la password in formato esadecimale invece che ASCII. Per convertire una stringa da ASCII in esadecimale aprite un terminale e eseguite:

python -c 'print "lamiapassword".encode("hex")'

Sostituendo alla stringa “lamiapassword” la stringa da convertire. Questo però è solo un workaround temporaneo e non risolve altri problemi. Una soluzione – speriamo temporanea in attesa di Kubuntu 9.04.1 – è installare il vecchio KNetworkManager o Wicd. I bug rilevanti su launchpad sono il 330811, 339313 e 348275.

Blocco del sistema

Saltuariamente il sistema si blocca completamente: mouse bloccato, schermo bloccato, qualunque attività sull’hard disk è interrotta. Putroppo la descrizione di questo problema comprende un po’ di tutto dai raggi cosmici ai riti voodoo avversi passando per server X che fa le bizze, kernel con bug, driver con bug, * con bug.

Nel mio caso gli imputati maggiori sono due.

Server X 1.6 e scheda video ATI (bug 348332)

Qui confluiscono due eventi:

  • Ubuntu utilizza il nuovo server X 1.6;
  • i recenti driver fglrx (proprietari) di ATI non supportano i chipset più datati.

Risultato netto:  X non parte o si blocca. Il problema è stato riportato da David Faure nel suo blog, il bug di riferimento è il 348332. Le possibili soluzioni sono effettuare il downgrade xserver-xorg alla versione 1.5, oppure si potrebbe aggiornare alle ultime release utilizzando i pacchetti sperimentali di Tormod Volder, disponibili sul suo PPA; ulteriori informazioni a riguardo sono disponibili sul wiki https://wiki.ubuntu.com/XorgOnTheEdge. Si faccia bene attenzione al fatto che in questo caso la pezza potrebbe essere peggiore del buco, quindi non lanciatevi in sperimentazioni strane se non sapete quello che state facendo. Nota a piè di pagina: probabilmente questo non è il mio problema, dato che chi ha questo bug riporta blocchi quasi immediati del sistema, mentre io posso utilizzarlo anche per ore. In effetti più leggo i bug report e più mi convinco che una volta tanto, almeno nel mio caso, la scheda ATI è innocente.

Soft lockup del kernel 2.6.28 su EXT4 (bug 330824)

Questo non è bello. Diversi utenti hanno riportato che durante le operazioni su una grande quantità di file il kernel ci può essere un soft lockup: il kernel non crasha ma non schedula nessuna operazione. Il risultato è un kernel vivo, ma in coma irreversibile. La causa precisa del bug non è chiara, ma chi ha effettuato i test riporta che è stato risolto da qualche parte tra la versione 2.6.29-rc6 e la 2.6.29-rc8. In generale sembra che il bug non sia più presente a partire dalla versione 2.6.29.

Per controllare se il bug è effettivamente questo sto utilizzando il kernel 2.6.29 pacchettizzato dal Kernel Team di Ubuntu. Si possono scaricare i .deb da questo indirizzo: http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.29.1/, scegliendo la versione a 32 o 64 bit. Una volta installato il kernel si aggiungera alle voci disponibili su grub all’avvio. Incrociamo le dita.

Aftermath

Questa release di Ubuntu, e in particolare di Kubuntu, ha qualche bug di troppo che si potrebbe considerare uno show-stopper. Adesso lo sto utilizzando senza problemi rilevanti, ma per un neofita forse è conveniente attendere che sui repository proposed e backport vengano aggiunti i pacchetti che risolvono i bug sopra esposti.

Webcam con driver gspca non funzionano su Intrepid Ibex

Oggi è stato rilasciato Ubuntu 8.10 Intrepid Ibex e non ho potuto fare a meno di aggiornare la mia Kubuntu. L’installazione è stata indolore come al solito. L’unico neo è che la mia webcam, una Trust wb 1200p, ha smesso di funzionare, mentre non aveva alcun problema su Hardy Heron 8.04. La webcam è identificata da lsusb come:

Bus 002 Device 004: ID 093a:2468 Pixart Imaging, Inc. Cammaestro 2.5DU/X-EYE/Orite SC-120/ICGear TravelCam/Easy Snap Snake Eye WebCam

Lo stesso identico bug, che impedisce di utilizzare la webcam con skype o ekiga, afflige molte webcam come la Logitech QuickCam, ClickSmart, OrbiCam e Zoom, Vimicro ZS0301, Philips SPC900NC. C’è una lunga discussione a riguardo su launchpad (bug 260918) dall’eloquente titolo: “needed: libv4l and associated application patches (or “gspca stopped working in 2.6.27″)”. In breve: con l’aggiornamento del kernel alla versione 2.6.27 il driver gspca, utilizzato da moltissime webcam, ha smesso di funzionare. Per risolvere il problema è necessario installare una versione di v4l uguale o successiva alla 0.5.2. Per evitare di compilarseli a mano, so possono aggiungere questi repository:

deb http://ppa.launchpad.net/lool/ubuntu intrepid main
deb-src http://ppa.launchpad.net/lool/ubuntu intrepid main

E eseguire sudo aptitude update e sudo aptitude upgrade.

Pimp My MPlayer

MPlayer è il player per video che uso di più in assoluto. Non è amichevole come Kaffeine o VLC, ma fa benissimo il suo lavoro. Martin Ankerl ha pubblicato sul suo blog un po’ di trucchi per personalizzare MPlayer. Riporto qui quelli che ho trovato più interessanti:

Evitare i salti

Se la CPU è sotto sforzo, il video di MPlayer potrebbe non essere fluido. La situazione è segnalata da questo messaggio:

Linux RTC init error in ioctl (rtc_irqp_set 1024): Permission denied
Try adding "echo 1024 > /proc/sys/dev/rtc/max-user-freq" to your system startup scripts.

Per risolvere il problema si può eseguire da una console di root (ottenuta con sudo -i su Ubuntu e derivate o con su su altre distribuzioni):

echo 1024 > /proc/sys/dev/rtc/max-user-freq

o, per mantenere permanentemente l’impostazione, modificate il file /etc/sysctl.conf e aggiungete questa riga:

dev.rtc.max-user-freq=1024

dopodiché eseguite:

sudo sysctl -p

o riavviate per usare le nuove impostazioni.

Streaming fluido

Guardando video in streaming o da DVD può capitare che il playback salti. Per rimediare si può istruire MPlayer affinché mantenga una cache più grande per il buffering. Modificate il file ~/.mplayer/config e aggiungete le seguenti righe:

cache=8192
cache-min=4

La prima riga specifica un buffer di 8MiB, la seconda indica a MPlayer che il buffer deve essere pieno almeno al 4% (circa 327KiB) prima di eseguire la riproduzione dello stream audio/video.

Output video

Usate xv come output video, è quello che permette una visualizzazione a schermo più veloce. Per farlo aggiungete al file ~/.mplayer/config:

vo=xv

Se non dovesse funzionare provate vo=gl2 oppure, se avete una scheda ATI con driver proprietari fglrx, fate riferimento a questo mio post: Problemi con MPlayer e ATI.

Aspect ratio

Se avete un monitor 16:10 aggiungete al solito file di configurazione la riga

monitoraspect=16:10

anche se in genere non dovrebbe essercene bisogno e MPlayer dovrebbe individuare correttamente l’aspect ratio del monitor.

Volume troppo alto o troppo basso

Si può fare in modo che MPlayer normalizzi il volume dello stream audio, utile quando la traccia è troppo bassa o troppo alta. Per farlo aggiungere a ~/.mplayer/config la riga:

af=volnorm

Font dei sottotitoli

Per cambiare il font dei sottotitoli, copiate il file .ttf del font che desiderate in ~/.mplayer/subfont.ttf. Ad esempio per usare DejaVu Sans eseguite:

cp /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf ~/.mplayer/config

Dimensione dei sottotitoli

Per cambiare la dimensione dei sottotitoli modificate ~/.mplayer/subfont.ttf aggiungendo:

subfont-text-scale=3

Provate valori diversi per trovare l’impostazione più di vostro gusto.

Tasti rapidi

Per l’uso comune:

  • f: attiva/disattiva la modalità fullscreen
  • ESC,q: termina MPlayer
  • barra spaziatrice,p: mette in pausa/riattiva il playback
  • j: cicla tra i sottotitoli
  • o: mostra/nasconde l’OSD (On Screen Display) con la posizione corrente
  • +,-: anticipa/ritarda lo stream audio rispetto al video, utile nei filmati con audio non in sync
  • [,]: diminuisce/aumenta la velocità di playback

Per spostarsi nello stream:

  • sinistra: indietro di 10 secondi
  • destra: avanti di 10 secondi
  • su: avanti di un minuto
  • giù: indietro di un minuto
  • PgUp (o Pag Su): avanti di 10 minuti
  • PgDn (o Pag Giù): indietro di 10 minuti
  • .: avanti di un frame (p per tornare al playback normale)