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.

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.

Nuovi hash cercasi

Il primo Novembre è terminata la prima fase del concorso indetto dal Natiolan Institute of Standards and Technology (NIST). È scaduto infatti il termine entro il quale presentare proposte di algoritmi di hashing per sostituire lo scricchiolante SHA-1 e creare il nuovo SHA-3. Non sono disponibili dati sul numero di “concorrenti”, ma si suppone che siano tra i 30 e i 50. Mentre scrivo sono disponibili le descrizioni di 20 algoritmi sul wiki dell’Institut für Angewandte Informationsverarbeitung und Kommunikation (IAIK, Institute for Applied Information Processing and Communications) dell’università tecnica di Graz.

Il concorso è stato indetto dal NIST nel 2007, per designare il successore dell’algoritmo di hashing SHA-1, ritenuto poco sicuro soprattutto a causa dell’attacco studiato da Xiaoyun Wang (王小云), che permette di trovare una collisione con 263 operazioni, contro le 280 operazioni che sarebbero necessarie. Il successore attuale di SHA-1 è SHA-2 e la sua famiglia (SHA-224, SHA-256, SHA-384 e SHA-512). Gli hash di SHA-2 sono però dello stesso tipo di SHA-1, per cui la comunità crittografica non ritiene saggio fidarsi sul lungo periodo di tali algoritmi. Per questo motivo si è deciso di creare il nuovo SHA-3, che dovrebbe essere annunciato nel 2012.

Tra le proposte più discusse c’è Skein, creato da Bruce Schneier – co-sviluppatore di Twofish – insieme a universitari e sviluppatori di Intel e Microsoft. L’algoritmo è estremamente veloce (500MiB/sec per core su un Core 2 Duo x64 3.1 GHz, veloce il triplo di SHA-512 e quasi il doppio di SHA-256) e snello (è possibile implementare Skein-512 con 200 byte di stato e Skein-256 con soli 100 byte), e utilizza primitive simili a quelle usate da SHA-2.

Degno di nota è anche MD6, sviluppato da un team del MIT guidato da Ron L. Rivest, noto per essere stato co-autore di RSA, MD4, MD5 e RC6 (uno degli algoritmi finalisti per lo standard AES). MD6 ha un design tradizionale, è relativamente lento (che può non essere solo uno svantaggio per un algoritmo di hashing) e è studiato per funzionare bene su sistemi paralleli.

La squadra Danese e Austriaca che ha progettato Serpent (finalista AES) e trovato vulnerabilità in SHA-1 e GOST ha inviato come proposta Grøstl, la cui architettura si discosta nettamente da quella di SHA, pur rimanendo veloce come SHA-2. Ci si attende una proposta anche da Joan Daemen e Vincent Rijmen, creatori di Rijndael (vincitore di AES), ma non sono ancora disponibili informazioni a riguardo.

Molte proposte sembrano di sviluppatori amatoriali. L’algoritmo WaMM è stato dimostrato vulnerabile in meno di 24 ore. Geoffrey Park, seguendo le idee di Stephen Wolfram, ha sviluppato un hash, NKS2D, interamente basato sugli automi cellulari, ma è inevitabilmente lento e non è possibile dimostrarne formalmente la sicurezza.

Non sono noti i criteri con cui verrà selezionao il vincitore. Il prossimo passo è la “SHA-3 Candidate Conference” che verrà tenuta a Febbraio 2009.

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.

Mozilla Ubiquity

L’assenza dalla rete per un mese non mi ha permesso di mantenermi al passo con le ultime novità, quindi sono in ritardo come le zucchine del 2002 che devono ancora uscire, ma mi è piaciuta molto l’idea di Mozilla Ubiquity, per cui posterò lo stesso il video che lo presenta:

L’ho installato e… devo dire che mi piace molto. Il fatto che abbia acquisito autonomamente i miei contatti nella rubrica di gmail mi ha inquietato un po’, spero che non vi siano falle di sicurezza nei dintorni.

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)

Twitter da bash

Usate Twitter e da bravi nerd/geek volete utilizzarlo direttamente da bash? Ecco uno script che usa cURL:

#!/bin/bash
#
# Twitter Update
#
# Requires: cURL http://curl.haxx.se/
# By Guillermo Antonio Amaral Bastidas < gamaral@guillermoamaral.com >
#

### CONFIGURE ###

declare -rx USERNAME="YOUR_USERNAME"
declare -rx PASSWORD="YOUR_PASSWORD"

### DONT MODIFY ###

declare -x STATUS="$@"

curl 'http://twitter.com/statuses/update.xml' \
    -u ${USERNAME}:${PASSWORD} \
    -d "status=${STATUS}" > /dev/null 2> /dev/null

# EOF

Inserite il vostro nome utente e password nelle apposite variabili, rendetelo eseguibile con chmod u+x twitter.sh e usatelo:

./twitter.sh Frase da inviare a twitter

Uso perverso:

PROMPT_COMMAND='/path/di/twitter.sh $(history | tail -n 1)'

così potrete davvero far sapere cosa state facendo in questo momento! (Attenzione: era un geek joke, se lo capite vuol dire che ora di fare una passeggiata fuori).