UNIXwork

Tags

c unix dav shell linux xattr solaris links x11 java rant fun webdav sync gnome apple benchmark network ldap oracle wtf analytics xnedit macos windows graalvm bsd curl mac apache virtualbox rhel zfs sparc tomcat microsoft freebsd arm

Festplatten-Benchmark mit bonnie++

21. Dezember 2016

Ein einfaches Tool für Benchmarks von Festplatten bzw. Dateisystemen ist bonnie++. Man startet es einfach und es werden im aktuellen Arbeitsverzeichnis verschiedene Tests durchgeführt.

Hier mal ein Beispiel, auch wieder auf einem Raspberry Pi:

$ bonnie++
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start 'em...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
	                -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
raspi.local      1G  3565  95 20890  44  9180  19  3822  97 24020  27  1060  23
	                ------Sequential Create------ --------Random Create--------
	                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
	          files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
	             16  3930  96 +++++ +++  6338 106  3920  94 +++++ +++  5559  96
raspi.local,1G,3565,95,20890,44,9180,19,3822,97,24020,27,1059.6,23,16,3930,96,+++++,+++,6338,106,3920,94,+++++,+++,5559,96

Die Tests mit putc() und getc() sind recht CPU-lastig, da hier Zeichen einzelnd geschrieben oder gelesen werden. Die block-basierten Tests hingegen zeigen gut den IO-Durchsatz.

Was auch auffällt, bei den Create-Tests fehlen die Werte für Read. Dies liegt daran, das in meinem Fall die Tests zu schnell fertig waren und dadurch keine genauen Ergebnisse berechnet werden können. Bonnie++ zeigt daher lieber keinen Wert an.

Netzwerk-Benchmark mit iperf

20. Dezember 2016

Mit iperf kann man sehr einfach sein Netzwerk benchmarken. Dazu startet man auf einem Computer einen iperf-Server:

$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Und auf einem anderen Computer startet man den iperf-Client und gibt den Server an (in diesem Fall rpi):

$ iperf -c rpi
------------------------------------------------------------
Client connecting to rpi, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.178.170 port 39890 connected with 192.168.178.28 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   114 MBytes  95.5 Mbits/sec

Man sieht, ein Raspberry Pi 1 kann sein 100 Mbit/s LAN gut auslasten. Allerdings hat das bei mir auch zu 75% CPU-Last geführt.

Oracle, Solaris, Linux und warum alles Scheiße ist

19. Dezember 2016

Es scheint jetzt offenbar doch sehr schlecht für die Zukunft von Solaris auszusehen. Vor ein paar Monaten hat Oracle noch einige neue Solaris-Features angekündigt. Ein Entwickler hat sogar Screenshots von Gnome 3 unter Solaris veröffentlicht. Offenbar hat Oracle sich aber kurzfristig komplett umentschieden und holzt jetzt einiges ab.

Ihr Cloud-Geschäft läuft ziemlich gut, und dort kommt auch Solaris zum Einsatz. Daher wird es wohl noch irgendwie erhalten bleiben. Aber wie genau wird sich erst zeigen müssen. Server mit Solaris hat offenbar keine Priorität mehr, es sollen stattdessen alle auf Cloud-Produkte umsteigen.

Linux ist mitlerweile das dominierende Betriebsystem im Unix-Segment. Es gibt viele Gründe dafür, warum dies so ist, technisch gesehen ist Solaris aber mehr als konkurrenzfähig. Features, die jetzt erst langsam zu Linux wandern gibt es schon seit mehr als 10 Jahren bei Solaris:

  • Mit systemd wurden unter Linux die alten Sys V init-Skripte abgelöst. Seit Solaris 10 kommt dort dafür smf zum Einsatz, was auch das Vorbild für systemd war.
  • Linux hat mitlerweile auch Container, Solaris hat die schon wesentlich länger und auch deutlich ausgereifter. FreeBSD Jails sind sogar noch älter.
  • Btrfs ist immer noch nicht production ready, auf jedenfall nicht, wenn man Raid5/6 will. Wichtige Daten vertraue ich nur noch ZFS an (auch unter Linux), alles andere ist nicht mehr zeitgemäß (oder unfertig).
  • Seit Linux 4.9 gibt es endlich eine Dtrace-Alternative. Ja, jetzt erst im Jahr 2016.

Es gibt auch sehr viele Kleinigkeiten, die mir unter Solaris besser gefallen.

  • Dank Boot Environments muss man keine Angst vor Upgrades haben. Außerdem müssen auch nie Upgrades beim Booten oder Shutdown installiert werden.
  • NFS kann kein Betriebsystem besser als Solaris.
  • Linux hat immer noch keine NFSv4 ACLs. Selbst btrfs unterstützt nur Posix-ACLs. Und unter vielen Distris sind die Dateisysteme standardmäßig auch ohne ACL-Support gemounted.
  • Solaris hat Event Ports als Alternative für poll, die wesentlich mächtiger sind als die Linux Alternative epoll.

Vor allem sind bei Solaris viele Dinge schöner integriert und arbeiten wunderbar zusammen, wärend Linux ein wenig mehr Gefrickel ist.

Das soll jetzt kein Linux-Bashing werden, aber es ist meiner Meinung nach nicht das völlig überlegene Betriebsystem. Wenn Solaris stirbt wäre das einfach ein Technologie-Verlust. Vor allem will ich mich nicht mit Problem rumschlagen, die schon vor Jahren gelöst wurden. Es gibt natürlich noch IllumOS, den OpenSolaris-Fork, das müsste ich mir mal genauer anschauen.

Düstere Zukunftsaussichten

Nicht nur um Solaris wäre es schade. Generell verschwinden die guten Produkte.

Von 2009 bis Ende 2013 war ich Apple-User. Mich hat damals sowohl OS X überzeugt als auch die Hardware. Heute überzeugt mich von Apple leider gar nichts mehr. Ich bin immer bereit für hohe Qualität mehr Geld zu bezahlen. Apple liefert aber nicht mal mehr ansatzweise etwas wie Qualität. Nach jeder Einführung eines neuen Mac häufen sich Berichte über Probleme damit. Wann kam eigentlich der letzte Mac raus, der keine Grafik-Probleme hatte? Und auf verlöteten RAM hab ich auch keine Lust. Ich hab wenig Hoffnung, dass zukünftige Desktop-Macs wieder besser werden.

Als Smartphone hatte ich schon immer Nexus-Geräte. Erst das Nexus One, dann ein Nexus 4. Ein neues Smartphone könnte ich langsam mal gebrauchen. Leider hat Google die Nexus-Reihe beerdigt, und das Pixel ist einfach lächerlich überteuert und überzeugt generell nicht.

Irgendwann brauch ich auch mal einen neuen Desktop-Computer. Ich bin ein bisschen ein Fan der HP Z-Workstations. Leider entwickelt sich HP immer mehr zur völligen Idioten-Firma. Ich bin auch sehr überzeugt von Fujitsu. Die halte ich eigentlich für den aktuell besten Hersteller. Dumm nur, dass es da Gerüchte gibt, dass sie ihre PC-Sparte verkaufen wollen.

Zu guter Letzt veraltet die von mir bevorzugte Linux-Distribution CentOS 7 leider immer mehr. Kurz nach Release ist die Software schon nicht top aktuell, für mich jedoch neu genug. Mit den Jahren wird das leider nicht besser. Da ein EL8 noch nicht in Sicht ist, muss ich mich möglicherweise nach einer neuen Distri umschauen.

ASCII Star Wars

18. Dezember 2016

Da aktuell Rogue One im Kino läuft möchte ich hier mal für diejenigen, die es noch nicht kennen, die ASCII Variante von Star Wars Episode IV erwähnen. Anschaubar ist das ganze per telnet:

telnet towel.blinkenlights.nl

Gnome Dark-Theme-Fenster ohne GTK

17. Dezember 2016

Gnome 3 hat das nette Feature, dass ein GTK-Theme eine light und eine darkVariante hat, und einzelne GTK-Anwendungen können sich aussuchen, welche Theme-Variante sie nutzen wollen. Nutzt eine Anwendung jedoch nicht GTK, so gibt es trotzdem eine Möglichkeit zumindestens einen dunklen Fenster-Rahmen zu erhalten.

Welche Farbe ein Fenster hat, hängt nur von einer X-Property ab. Starten wir einfach mal xprop und klicken auf ein dark-theme-Fenster, dann gibt das Programm alle Properties aus. Darunter findet sich dann auch diese Zeile:

_GTK_THEME_VARIANT(UTF8_STRING) = "dark"

Man kann mit xprop auch Properties setzen:

xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" 

Klickt man dann auf ein Fenster, müsste seine Titelleiste das dark theme nutzen.

Um das gleiche in C mit der xlib zu machen, reicht folgender Code:

void set_dark_theme(Display *dp, Window window) {
	Atom atom = XInternAtom(dp, "_GTK_THEME_VARIANT", False);
	Atom type = XInternAtom(dp, "UTF8_STRING", False);
	XChangeProperty(
	        dp, 
	        window, 
	        atom,
	        type,
	        8,
	        PropModeReplace,
	        (const unsigned char*)"dark",
	        4);
}
Zurück Weiter