[Vienna-pm] Notizen zum Gespräch nach dem gestrigen Vortrag
Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯
daxim at cpan.org
Fri Jun 20 12:27:25 PDT 2008
=head1 openSUSE 11 ist grade raus gekommen
Das Mediawiki <http://de.opensuse.org/> hat leider schlappgemacht, aber
wenigstens die Downloadseite
<http://download.opensuse.org/distribution/11.0/iso/> ist statisch. Es
gibt traditionelle Installationsmedien, eine Live-CD, von der
installiert werden kann, und ein kleines Bootimage für Installation
übers Netz; alles verfügbar über HTTP/Metalink und Bittorrent.
Was ist neu: Der Installationsprozess wurde überarbeitet, nach Qt4
portiert und stellt weniger Fragen. RPMs sind nun mit LZMA kompromiert,
die Basisinstallation ist in Schemaabbildern zusammengefasst. Im
Idealfall hat man mit 7 Klicks in weniger als 20 Minuten das System
installiert.
Paketverwaltung: Das grafische Frontend hat Icons für Paketgruppen und
Schemas. Das Backend Zypper findet Lösungen genauso gut wie smart (also
besser als yum und apt), aber verbraucht dabei trotzdem
schlimmstenfalls nur die halbe Zeit und immer wesentlich weniger
Speicher als alles andere.
Eyecandy: Nebst Compiz Fusion wird AIGLX standardmäßig aktiviert (wo
verfügbar). Es gibt einen vereinfachten Konfigurator neben ccsm.
Software: KDE 3.5.9 und 4.0.4, perl-5.10.
=head1 threads
Q: Why did the chicken cross the road?
A: the side. to To other get
Vorm Ausprobieren die Distros threads, threads-shared, Thread-Queue,
Thread-Semaphore von <http://search.cpan.org/~jdhedden/> upgraden. Wenn
man in die Changelogs schaut, tut sich da in letzter Zeit viel.
=head2 triviales Beispiel
threads-test.pl
use 5.010;
use strict;
use warnings FATAL => 'all';
use threads;
use Math::Big::Factors qw(factors_wheel);
$| = 1;
my @t;
my $runs = shift || 4;
for (0..$runs) {
$t[$_] = threads->create(sub {
say "start $_";
say join ',', factors_wheel(1234567890); # int(rand(10000)
** 2)
sleep rand 2;
say "end $_";
});
};
$_->join for @t;
In htop <http://linuxwiki.de/htop> lassen sich Userland-Threads
anzeigen. Da sieht man schön, dass die Threads gleichmäßig auf die
CPUs/Cores verteilt werden. Ohne sleep() gibt's ordentlich Last.
=head2 Auswertung
threads-visualise.pl
use 5.010;
use strict;
use warnings FATAL => 'all';
my @s;
my $max_r = 0;
while (<>) {
if (/^start (\d+)/) {
$s[$1] = 'R';
} elsif (/^end (\d+)/) {
$s[$1] = 'x';
};
my $line = join q(), map {$_ // '*'} @s;
my $count_r = $line =~ tr/R//;
$max_r = $count_r if $count_r > $max_r;
my $count_x = $line =~ tr/x//;
say "R: $count_r x: $count_x $line";
};
say "max R: $max_r";
Aufruf: perl threads-test.pl 100 | perl threads-visualise.pl
Selbst auf dicker Hardware krieg ich mit Linux nicht mehr als 20 Threads
gleichzeitig.
=head2 triviales Beispiel mit Queues
<http://www.rosettacode.org/wiki/Synchronous_Concurrency#Perl>
=head2 Widefinder
Einfache Auswertung eines Webserverlogfiles auf Hardware mit vielen
CPUs. Am besten skalierende Lösung ist in Perl und von Sean O'Rourke.
<http://search.cpan.org/~seano/>
<http://www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder>
<http://www.tbray.org/ongoing/When/200x/2007/10/30/WF-Results>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part.
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20080620/7ad7d49d/attachment.bin
More information about the Vienna-pm
mailing list