ext4 with barrier=1 and performance

The use of nobarrier provides a great performance gain on my laptop. I thinki I will continue like that even if my hard drive has got not battery unit.

With ext4 (rw,noatime,errors=remount-ro,data=ordered)


#fs_mark -t 4 -s 10240 -n 1000 -d /home/goneri/tmp/test
# Version 3.3, 4 thread(s) starting at Mon Feb 4 10:35:47 2013
# Sync method: INBAND FSYNC: fsync() per file in write loop.
# Directories: no subdirectories used
# File names: 40 bytes long, (16 initial bytes of time stamp with 24 random bytes at end of name)
# Files info: size 10240 bytes, written with an IO size of 16384 bytes per write
# App overhead is time in microseconds spent in the test not doing file writing related system calls.

FSUse% Count Size Files/sec App Overhead
o 84 4000 10240 35.2 113031

ext4 (rw,noatime,nobarrier,errors=remount-ro,commit=15,data=ordered)


tosh-r630:/tmp$ fs_mark -t 4 -s 10240 -n 1000 -d ~/tmp/test

# fs_mark -t 4 -s 10240 -n 1000 -d /home/goneri/tmp/test
# Version 3.3, 4 thread(s) starting at Mon Feb 4 10:40:06 2013
# Sync method: INBAND FSYNC: fsync() per file in write loop.
# Directories: no subdirectories used
# File names: 40 bytes long, (16 initial bytes of time stamp with 24 random bytes at end of name)
# Files info: size 10240 bytes, written with an IO size of 16384 bytes per write
# App overhead is time in microseconds spent in the test not doing file writing related system calls.

FSUse% Count Size Files/sec App Overhead
84 4000 10240 839.9 99672

Debian Wheezy and cfengine

How to bootstrap a cfengine node with Debian Wheezy Cfengine.

# cp /usr/share/doc/cfengine3/example_config/* /etc/cfengine3/
# sed -i 's,"/var/lib/cfengine3/inputs","/etc/cfengine3",' /etc/cfengine3/update.cf
# sed -i 's,RUN_CFEXECD=0,RUN_CFEXECD=1,' /etc/default/cfengine3
# /etc/init.d/cfengine3 restart
# cf-agent --bootstrap --policy-server 2a01:e35:242d:e930:250:XXXX:XXXX:XXXXX

backup LVM LV with bup

Bup is a backup software that use git for the storage. Bup import chunks of file to deduplicate large files.

tosh-r630:~/backup$cat /dev/mapper/virtualmachines-sarge | bup split -n virtualmachines-sarges
bloom: adding 1 file (10967 objects).
tosh-r630:~/backup$bup join virtualmachines-sarges > /tmp/sarges.img
tosh-r630:~/backup$file /tmp/sarges.img
/tmp/sarges.img: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200, GRUB version 0.94; partition 1: ID=0x83, active, starthead 1, startsector 63, 9976302 sectors; partition 2: ID=0x5, starthead 0, startsector 9976365, 498015 sectors, code offset 0x48

OpenSSL1.0.0e+Net::SSLeay on Windows

I managed to get Net::SSLeay to work with the last OpenSSL release. Here just some not for myself.

OpenSSL test-suite build will fail but the .a and the openssl.exe file are ok.

; LIBPATH=`echo $LIBPATH | sed -e ‘s/ /:/g’`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=ideatest.exe} ideatest.o ${LIBDEPS} )
make[2]: Leaving directory `/cygdrive/c/strawberry/openssl-1.0.0e/test’
gcc -I.. -I../include -DOPENSSL_THREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DWHIRLPOOL_ASM -c -o md2test.o md2test.c
md2test.c:1: error: expected identifier or ‘(‘ before ‘!’ token
md2test.c:1: error: stray ‘\377’ in program
md2test.c:1: error: stray ‘\376′ in program
md2test.c:1:14: warning: null character(s) ignored
md2test.c:1:16: warning: null character(s) ignored
md2test.c:1:18: warning: null character(s) ignored
md2test.c:1:20: warning: null character(s) ignored
md2test.c:1:22: warning: null character(s) ignored
md2test.c:1:24: warning: null character(s) ignored
md2test.c:1:26: warning: null character(s) ignored
md2test.c:1:28: warning: null character(s) ignored
md2test.c:1:30: warning: null character(s) ignored
md2test.c:1:32: warning: null character(s) ignored
md2test.c:1:34: warning: null character(s) ignored
: recipe for target `md2test.o’ failed
make[1]: *** [md2test.o] Error 1
make[1]: Leaving directory `/cygdrive/c/strawberry/openssl-1.0.0e/test’
Makefile:255: recipe for target `build_tests’ failed
make: *** [build_tests] Error 1

Administrator@ordi-de-gon▒ri /cygdrive/c/strawberry/openssl-1.0.0e

The openssl.exe binary is in apps/ on Windows, not bin. Net::SSleay Makefile.PL file to find the OpenSSL distribution because of that.

(…)
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x251a): undefined reference to `_imp__CertOpenStore@20′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x255f): undefined reference to `imp__CertFreeCertificateContext@4′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x2576): undefined reference to `_imp__CertCloseStore@8′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x25d5): undefined reference to `_imp__CertEnumCertificatesInStore@8′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x2e1a): undefined reference to `_imp__CertOpenStore@20′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x2e4d): undefined reference to `_imp__CertEnumCertificatesInStore@8′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x2f28): undefined reference to `_imp__CertDuplicateCertificateContext@4′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x2fb1): undefined reference to `_imp__CertCloseStore@8′
c:\strawberry\openssl-1.0.0e\libcrypto.a(e_capi.o):e_capi.c:(.text+0x30e6): undefined reference to `_imp__CertFreeCertificateContext@4′
collect2: ld returned 1 exit status
dmake: Error code 129, while making ‘blib\arch\auto\Net\SSLeay\SSLeay.dll’

The patch applied to get Net::SSLeay to build.

— Net-SSLeay-1.42.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm 2011-10-03 08:23:34.000000000 +0200
+++ Net-SSLeay-1.42/inc/Module/Install/PRIVATE/Net/SSLeay.pm 2011-12-03 02:22:28.286660290 +0100
@@ -90,7 +90,7 @@ EOM
# libeay32 and ssleay32.
# This construction will not complain as long as it find at least one
# libssl32.a is made by openssl onWin21 with the ms/minw32.bat builder
– push @{ $opts->{lib_links} }, qw( libeay32MD ssleay32MD libeay32 ssleay32 libssl32);
+ push @{ $opts->{lib_links} }, qw( libssl libcrypto Crypt32 );
} else {
$opts->{optimize} = ‘-O2 -g’;
push @{ $opts->{lib_links} },
@@ -172,9 +172,10 @@ sub find_openssl_exec {
my ($self, $prefix) = @_;

my $exe_path;
– for my $subdir (qw( bin sbin out32dll )) {
+ for my $subdir (qw( apps bin sbin out32dll )) {
my $path = File::Spec->catfile($prefix, $subdir, “openssl$Config{_exe}”);
– if ( -x $path ) {
+
+ if ( -e $path ) {
return $path;
}
}

How to grab Thunderbird 3.0.4 sources

Commit references commits can be found in the release note on the wiki: https://wiki.mozilla.org/Releases/Thunderbird_3.0.4


hg clone -r b8e06312e645 http://hg.mozilla.org/releases/comm-1.9.1 thunderbird
cd thunderbird
echo 'ac_add_options --enable-application=mail' > .mozconfig
echo 'mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-tb-release' >> .mozconfig
hg clone -r ead1204d8b81 http://hg.mozilla.org/releases/mozilla-1.9.1 mozilla

Install the build dependencies ( https://developer.mozilla.org/En/Simple_Firefox_build ).

Now we can launch the build


make -f client.mk

Debian Vserver cheat Sheet

This is just to keep a trace for myself on how to create a Vserver with Internet connectivity.

Create the network interface
Edit /etc/network/interfaces and add:

auto dummy0
iface dummy0 inet static
address 192.168.50.1
netmask 255.255.255.0

Restart the network

/etc/init.d/networking restart

Turns the NAT on

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0 here is the network interface you use for your network access.

Create the VM

sudo vserver build build -n cyrus2.3 -m debootstrap --netdev dummy0 --interface 192.168.50.2/24 -- -d lenny

Enter the VM

sudo vserver cyrus2.3 start
sudo vserver cyrus2.3 enter