[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