Der Server des Manitu

Januar 21st, 2007

Diese Website ist heute umgezogen auf einen Rootserver M von Manitu, einen Sempron 3000+ mit 512MB RAM. Neben der angenehmen Tatsache, dass dieser Server mit einer günstigen Monatsmiete sehr bezahlbar ist, ist das Spannendste daran, dass gleich vier IP-Adressen im Preis enthalten sind. Das schreit geradezu nach Virtualisierung.

Folgerichtig wird Ihnen diese Information nun präsentiert von einem virtuellen Server unter OpenVZ. Neben dem Wirtssystem mit Debian Sarge werkeln drei Gastsysteme mit Debian Etch. Damit lassen sich Abhängigkeiten sauber trennen und schnell Bekannte finden, die an einem eigenen vServer interessiert sind und sich finanziell beteiligen.

Mit dem bisherigen vServer bei Strato war ich übrigens extrem zufrieden. Wer also nicht wie ich beruflich vorgeschädigt ist und Spaß an unnötigen Spielereien findet, dem kann ich den V-PowerServer C dort wärmstens empfehlen – eine bessere Performance und Verfügbarkeit wird meiner Einschätzung nach kaum zu finden sein.


OpenVZ VPS configuration samples

Dezember 31st, 2006

Sample A
Hoster runs Virtuozzo on a Dual Core Opteron 175 CPU / 4 GB RAM with 32-bit SMP kernel and probably dozens of virtual hosts. First impression of delivered performance is ok, but scant resources make it almost unusable for even basic server tasks. To me this is more a „jailed“ environment to host a few static websites. Guaranteed memory of 90 MB per VPS.

resource        barrier      limit
----------------------------------
kmemsize       20971520   23068672
lockedpages         256        256
privvmpages       65536      72192
shmpages          20480      20480
numproc              96         96
physpages    2147483647 2147483647
vmguarpages        8192 2147483647
oomguarpages      23040 2147483647
numtcpsock          360        360
numflock            188        206
numpty               16         16
numsiginfo          256        256
tcpsndbuf       1720320    2703360
tcprcvbuf       1720320    2703360
othersockbuf    1126080    2097152
dgramrcvbuf      262144     288358
numothersock        360        360
dcachesize      3145728    3460300
numfile            4096       4096
numiptent           100        100

Sample B
Hoster runs Virtuozzo on a Pentium 4 CPU at 2.4 GHz / 1.5 GB RAM with 32-bit kernel and probably a handful of virtual hosts. First impression of delivered performance is ok and second impression is too, well configured and performing. This is the hoster and configuration that this website is currently running at. Guaranteed memory of 515 MB per VPS.

resource        barrier      limit
----------------------------------
kmemsize       14112433   15523665
lockedpages        7600       8192
privvmpages      238528     259324
shmpages         262144     262144
numproc             396        396
physpages             0 2147483647
vmguarpages      132062 2147483647
oomguarpages     132062 2147483647
numtcpsock         1000       1000
numflock            400        464
numpty              128        128
numsiginfo         1024       1024
tcpsndbuf       5366512    8204912
tcprcvbuf       5366512    8204912
othersockbuf    3006464    8126464
dgramrcvbuf      480000     524288
numothersock        764        764
dcachesize      5023656    5672656
numfile           12864      12864
numiptent           256        256

Show nonpresent devices to remove unneeded drivers

Dezember 23rd, 2006
cmd
set DEVMGR_SHOW_NONPRESENT_DEVICES=1
devmgmt.msc

(see http://www.heise.de/ct/06/26/006/)


OpenVZ kernel on Manitu Rootserver M / Debian

Dezember 23rd, 2006
#aptitude install wget bzip2 patch libncurses5-dev
#cd /usr/src

#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.9.tar.bz2

#tar xvfj linux-2.6.9.tar.bz2

#ln -s linux-2.6.9 linux

#cd linux

#wget http://download.openvz.org/kernel/...\
      /patch-023stab037.3-combined.gz

#gzip -d patch-023stab037.3-combined.gz

#patch -p1 < patch-023stab037.3-combined

#wget http://download.openvz.org/kernel/...\
      /kernel-2.6.9-023stab037-i686.config.ovz

#cp kernel-2.6.9-023stab037-i686.config.ovz .config

#make bzImage

#make modules

#make modules_install

#cp arch/i386/boot/bzImage /boot/bzImage-2.6.9
#vi /boot/grub/menu.lst
title           Linux-2.6.9-openvz
root            (hd0,1)
kernel          /boot/bzImage-2.6.9 root=/dev/sda2
savedefault
boot
#shutdown -r now

HET 20 (4)

Juni 19th, 2006

An der seriellen Schnittstelle des HET 20 vermittelt eine Schaltung aus zwei Transistoren zwischen den TTL-Pegeln des Microcontrollers und den Spannungspegeln der RS-232-Schnittstelle am PC. Auf einen Pegelumsetzer wie den MAX232 wird verzichtet, denn dieser ist nicht ganz billig, benötigt zusätzlich noch vier Elkos für seine Ladungspumpe, und es würde nur ein Viertel (T1) des Bausteins für die unidirektionale Übertragung vom HET 20 zum PC genutzt werden können. Zudem ist die vorliegende Schaltung mit einem Emitterfolger-Ausgang flexibel und kann ausgangsseitig auch mit TTL-Pegel betrieben werden.

Dies ist also keine RS-232-Schnittstelle, sondern schlicht eine serielle Schnittstelle, die zu RS-232 soweit kompatibel ist, dass sie an einer normgerecht beschalteten Gegenstelle funktionieren kann, wenn die Gegenstelle hinsichtlich der erwarteten Spannungspegel nicht eben pingelig ist. Dies ist beim Anschluss an einen Desktop-PC üblicherweise der Fall, nach Hörensagen kann es an Notebooks manchmal Probleme geben. Zu beachten ist auch, dass das Verbindungskabel möglichst kurz gewählt werden sollte.

Die im Schaltplan des HET 20 angegebene Pinbelegung der RJ-12-Westernbuchse stimmt nicht mit der Belegung am Bauteil überein, die ungeradzahligen und geradzahligen Pins sind dort paarweise vertauscht (1-2/3-4/5-6). Bezogen auf die Angaben im Schaltplan kann folgende Verdrahtung zur 9-poligen RS-232-Stiftleiste am PC vorgenommen werden: Pin 1 und Pin 5 des HET 20 auf Pin 5 (GND), Pin 2 des HET 20 auf Pin 3 (RxD) und Pin 3 des HET 20 auf Pin 4 (DTR). Hinweis: Die +12 V am Pin 4 (DTR) des PC liegen erst an, wenn ein Programm auf die COM-Schnittstelle zugreift.

Die Datenübermittlung erfolgt in Form von Datentelegrammen mit einer Größe von minimal 12 Bytes und maximal 22 Bytes in einem Abstand von 500 ms. Jedes Datentelegramm beginnt mit dem Steuerzeichen STX und endet mit dem Steuerzeichen ETX. Dazwischen werden die Werte für Kapazität, Entladestrom, Leerlaufspannung, Lastspannung und Innenwiderstand mit jeweils High-Byte und Low-Byte als 16-Bit-Werte übertragen. Hat eines der Datenbytes den Wert 02h (STX), 03h (ETX) oder 05h (ENQ), dann erfolgt eine Ersetzung durch Voranstellen von ENQ und Übermitteln des Datenbytes addiert mit dem Wert 10h.

Das nachfolgende Perl-Skript zeigt exemplarisch, wie die Daten auf einem Linux-PC mit nur geringem Aufwand empfangen und ausgegeben werden können. Das HET 20 ist in diesem Beispiel an COM1 angeschlossen. Wegen der Plattformabhängigkeit des Moduls Device::SerialPort für den Zugriff auf die serielle Schnittstelle läuft dieses Skript ausnahmsweise nicht unter Win32; dort kann aber mit minimalen Abwandlungen das Modul Win32::SerialPort verwendet werden. Auf spezielle Tweaks habe ich verzichtet, damit die Sache nachvollziehbar bleibt.

#!/usr/bin/perl

use strict;
use Device::SerialPort;
use Time::HiRes qw(sleep);

my $RS232 = Device::SerialPort->new('/dev/ttyS0');

$RS232->baudrate(19200);
$RS232->parity('even');
$RS232->databits(8);
$RS232->stopbits(1);
$RS232->read_char_time(1);

while(1) {
  my($Count,$Buffer) = $RS232->read(22);

  unless($Count) { sleep(0.05); next; }

  my @Data = unpack('C22',$Buffer);
  next unless(shift(@Data) == 0x02);
    
  for(my $Ix = 0; $Ix < @Data; $Ix++) {
    last if($Data[$Ix] == 0x03);
    next if($Data[$Ix] != 0x05);
    splice(@Data,$Ix,1); $Data[$Ix] -= 0x10;
  }

  my $Cap = $Data[0] * 256 + $Data[1];
  my $Cur = $Data[2] * 256 + $Data[3];
  my $VoN = $Data[4] * 256 + $Data[5];               
  my $VoL = $Data[6] * 256 + $Data[7];
  my $Res = $Data[8] * 256 + $Data[9];

  printf("%5i mAh | %5.2f A | %5.2f V | %5.2f V | %5.1f mOhm\n",
          $Cap, $Cur/100, $VoN/100, $VoL/100, $Res/10);
}

1;

Siehe auch:
HET 20 (Teil 3)