Centos on BrandZ lx zones benchmarked

With Solaris 11, Sun/Oracle dropped “lx brandz” zones, the linux guest support for the solaris containers technology. Some doesn’t even knew this was existing. The perspectives of using ZFS’s capabilities for provisioning was really exciting. But that project wasn’t ready for production setups, and support was only provided for linux 2.4 kernels (although there was ways to run a 2.6.x), and with incomplete features.

I ran some performance tests few months ago. Let’s bring some figures explaining the Solaris 11 decision.

 

As shown above, brandz zones are full zones providing a syscall translation layer to the guest os. The linux guest is instanciated by running its init process, like a “user mode linux” system would be.

Overhead estimation

I used BYTE UNIX Benchmarks (Version 5.1.2) to run a set of micro benchmarks  involving syscalls.

The brandz zone was set up with a Centos 5.4/i386 distrib, minimal install.

OpenSolaris Host details

System: opensolaris: OpenSolaris Development snv_134 X86
OS: SunOS — 5.11 — snv_134
Machine: i86pc: i86pc
Language: en_US.utf8 (charmap=, collate=)
CPUs: no details available
Uptime: 5:30pm up 1:08, 1 user, load average: 0.17, 3.21, 3.86; runlevel

Most Solaris details were not detected, but this is the global zone for the following brandz zone result.

Every zone was reduced to a minimal set of processes and brought to runlevel 3 (or single-user milestone).

Linux Guest details (Centos 5.4 i386)

System:
centos: GNU/Linux
OS: GNU/Linux — 2.6.18 — BrandZ fake linux
Machine: i686: i386
Language: en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″)
CPUs: 0: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ (0.0 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
1: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ (0.0 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
Uptime: 10:28:23 up 1 min, 1 user, load average: 0.16, 0.58, 0.34; runlevel 3

The following table shows score for both zones, and relative performance.

CentOS Score
Native Score
Difference
1 thread 2 // 1 // 2 // 1// 2//
Execl Throughput 82.00 99.30 204.90 230.20 lps -60,0% -56,9%
File Copy 1024 bufsize 2000 maxblocks 31784.90 45180.30 40514.50 54613.10 K Bps -21,5% -17,3%
File Copy 256 bufsize 500 maxblocks 8273.00 11576.50 10601.20 13860.50 K Bps -22,0% -16,5%
File Copy 4096 bufsize 8000 maxblocks 122401.90 172447.90 149167.70 204321.90 K Bps -17,9% -15,6%
Pipe Throughput 58154.50 80420.50 89803.10 117446.00 lps -35,2% -31,5%
Pipe-based Context Switching 3773.30 6809.80 3838.50 7238.90 lps -1,7% -5,9%
Process Creation 134.20 151.90 263.30 301.20 lps -49,0% -49,6%
Shell Scripts (1 concurrent) 210.00 238.70 432.50 482.00 lpm -51,4% -50,5%
Shell Scripts (16 concurrent) 15.80 14.90 32.40 33.00 lpm -51,2% -54,8%
Shell Scripts (8 concurrent) 32.20 30.50 66.10 67.50 lpm -51,3% -54,8%
System Call Overhead 60471.00 81388.60 58388.50 73052.70 lps 3,6% 11,4%

Running syscalls micro benchmarks is likely to draw the worst case, and we can see an increasing overhead (up to 11.4%) when running multiple threads. On the other figures, we can see a real performance decrease for I/O where increasing buffer size doesn’t really help: This means the syscall overhead only has little impact in the overall performance decrease and there’s probably a 15% performance hit from another cause. Processes spawning performance is really bad, and this is also probably due to the fact a conversion is made before attaching them to the Solaris kernel (remember we do not run any linux kernel, just its init process).

Really weak in worst cases and on I/O, this zones were probably usable for cpu intensive tasks only. An unsurprising drop of unpolished technology. (Note they also provide para-virtualized linux support through virtualbox on x86 platforms).

HomeMade Antifreeze Glass Cleaner

For the ones living in cold areas, here’s empirical measurements for required antifreeze in car glass cleaner. If it can help someone.

Using 90% ethanol (inc. 3% methanol) as anti freeze agent:

50% : up to -30°C

33% : up to -20°C

25% : up to -15°C

20% : up to -14°C

16% : up to -13°C

10% : up to -7°C

Geiger counters and dosimeters price craziness

Totally out-of-stock for most of them (popular models shipping from September/October), Geiger prices have gone really high. But how much ?

I reviewed current prices (27/06) in online stores with google and e-bay’s prices using both current and won/sold items search.

I retrieved the pre-Fukushima incident prices (Last update of his page in February) from Vaughn Aubuchon’s web page. He has information for many common counters and dosimeters, including sensor comparison and fix schema for antiques.

The lowest prices from stores are usually for pre-orders. Some stores even offer higher prices for a shortest availability option.

RADEX RD1503

  • Before Fukushima price: 85 EUR
  • Online stores: 225~
  • E-Bay Prices: 230~850 EUR

price increase +270 to +1000%

 

RADEX RD1706

  • Online Stores: 259-720 EUR
  • E-Bay Prices: 399 ~ 850 EUR

 

Kvarts DRSB-01

Hard to find simple geiger counter

  • Before Fukushima price: 16 EUR
  • Manufaturer price: ?
  • Online Stores: up to 260 EUR for a used one !
  • E-Bay Prices: 65 EUR

price increase +400% to 1625% !


Gamma Scout

  • Before Fukushima price: 246 EUR
  • Manufaturer price: ?
  • Online Stores: 277-365 EUR
  • E-Bay Prices: 605 ~ 1400 EUR

price increase +12% to 569% !


Terra-P IP20 / Ecotect MKS-05

  • Before Fukushima price: 118 EUR
  • Manufaturer price: ?
  • Online Stores: 345 ~ 999 EUR
  • E-Bay Prices: 550 ~ 780 EUR

price increase +292% to 846% !

 

Victoreen Model CD V-700

  • Before Fukushima price: 35 EUR
  • Manufaturer price:  cold war antique !
  • Online Stores: 210 EUR (as seen on anythingradioactive.com / 185£)
  • E-Bay Prices: 70 ~ 256 EUR

price increase +100 to +730%

SOEKS 01М (new)


  • Before Fukushima price: Unknown ( new model )
  • Manufacturer price: 150 EUR ( 6000 roubles / June 2011 )
  • Online stores: 230~420 EUR (note soeks.eu is now selling for $399 when still listed $599 in orders’s drop list)
  • E-Bay Prices: 230 ~ 400 EUR

price increase +53 to +266%


There’s also some clones on the market like the ukrainian “TARREX” or the Chinese “LK3600″.

(Français) Tunnels IPv6 et smtp.free.fr

Sorry, this entry is only available in Français.

(Français) Ergonomie Voyages SNCF, toujours sur la mauvaise voie

Sorry, this entry is only available in Français.

Extracting the dialed number from phone record

I ran into a prank call today on youtube, and the authors didn’t care about removing the sound of the dialed number. Comments were arguing that the number could be retrieved. Of course it can: Everyone knows you can simply play that record to redial the number and generating DTMF tones is easy (I wrote my own phone-book application when 15, dialing numbers from my soundblaster card). What about the reverse process then ? Let’s try:

Extracting and locating the DTMF tones within the record. I used Audacity:

According to Wikipedia, here’s the matrix for the DTM Frequencies:

DTMF keypad frequencies (with sound clips)
1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

Using the Spectrum analysis module on the selected sample and with the appropriate parameters, you can clearly see the two tones pikes:

Here, we can identify the 770Hz + 1336Hz dual tones revealing the ’5′ number. Getting the full number is just a matter of minutes :)

I used the Barlett Window with 512 Bytes sample and displayed using the logarithmic scale (as we look for low freq pikes).

Don’t let low priority jobs throttle up your cores

On laptop, low priority background processes can kill your battery really fast even if you’re using the ‘ondemand’ cpu frequency scaling. This remark also applies to saving power on desktop.
With lowest priority, any intensive process will still throttle up your cpu frequency. You usually want it to take only the remaining cpu cycles, not caring about how long this task takes.

You can solve this problem by asking the ondemand cpu governor to ignore tasks with nice values higher than default.
To apply this on every core on the system:

echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load

For permanent use, as it’s done though the /sys/, you’ll need to add it to your rc.local or a custom init.d script ( sysctl.conf can’t be used here ).

Sixxs.net tunnel endpoint easy selection

Instead of guessing the closest and fastest endpoint before registering your Sixxs.net IPv6 tunnel,
just run that little script:
https://github.com/fcartegnie/sixxspopelector/raw/master/sixxslist.pl

It will just fetch the latest tunnels list and ping them.

sudo perl sixxslist.pl

Retrieving page
Testing hosts
Pinging bebru01.sixxs.net... 83.71 ms
Pinging bebru02.sixxs.net... 78.50 ms
Pinging brudi01.sixxs.net... 344.92 ms
Pinging dkcph01.sixxs.net... 84.20 ms
Pinging dkcph02.sixxs.net... 500.93 ms
Pinging eetll01.sixxs.net... 105.96 ms
Pinging fihel01.sixxs.net... 176.96 ms
Pinging frmrs01.sixxs.net... 58.09 ms
Pinging decgn01.sixxs.net... 65.25 ms
Pinging dedus01.sixxs.net... 64.78 ms
Pinging deham01.sixxs.net... 75.89 ms
Pinging deham02.sixxs.net... 92.31 ms
Pinging demuc02.sixxs.net... 64.55 ms
Pinging iedub01.sixxs.net... 73.23 ms
Pinging iegwy01.sixxs.net... 136.07 ms
Pinging ittrn01.sixxs.net... 101.98 ms
Pinging lulux01.sixxs.net... 91.69 ms
Pinging nlams04.sixxs.net... 94.15 ms
Pinging nlams05.sixxs.net... 62.22 ms
Pinging nlams01.sixxs.net... 63.98 ms
Pinging nlede01.sixxs.net... 80.49 ms
Pinging nlhaa01.sixxs.net... 63.29 ms
Pinging nzwlg01.sixxs.net... 341.66 ms
Pinging noosl01.sixxs.net... 80.70 ms
Pinging plpoz01.sixxs.net... 82.37 ms
Pinging plwaw01.sixxs.net... 80.93 ms
Pinging ptlis01.sixxs.net... 111.99 ms
Pinging simbx01.sixxs.net... 79.90 ms
Pinging sesto01.sixxs.net... 118.91 ms
Pinging chzrh01.sixxs.net... 88.84 ms
Pinging chzrh02.sixxs.net... 78.59 ms
Pinging gblon02.sixxs.net... 52.97 ms
Pinging usqas01.sixxs.net... 153.30 ms
Pinging usbos01.sixxs.net... 156.51 ms
Pinging uschi02.sixxs.net... 152.75 ms
Pinging uschi03.sixxs.net... 186.11 ms
Pinging usdal01.sixxs.net... 195.37 ms
Pinging usphx01.sixxs.net... 231.69 ms
Pinging demun01.sixxs.net... no fair delay
Pinging nlams02.sixxs.net... no fair delay
Pinging nlams03.sixxs.net... no fair delay
Pinging usatl01.sixxs.net... 500,91 ms
Pinging uschi01.sixxs.net... 500,89 ms
Pinging uslax01.sixxs.net... 500,83 ms
Pinging usewr01.sixxs.net... 500,93 ms
And your winners are:
gblon02.sixxs.net (52,97 ms away)
frmrs01.sixxs.net (58,09 ms away)
nlams05.sixxs.net (62,22 ms away)
nlhaa01.sixxs.net (63,29 ms away)
nlams01.sixxs.net (63,98 ms away)

From Digital to analog, to easy money

As an update to my previous post, here’s another spotted totally useless chinese product: An HDMI to YUV converter. Of course, there’s no DSP, it’s just raw signal reassignement…

Supposely only used by a ‘special’ appliance. But customers can’t be aware of this.

http://www.dealextreme.com/details.dx/sku.31741

Buffalo WZR-HP-G300NH additional packages environment setup (ddwrt)


Assuming you’ve properly configured and initialized your jffs filesystem on your Buffalo WZR-HP-G300NH running the DD-WRT firmware, here’s the instructions to set-up the root filesystem (it needs its own, as the main root is not writable) and its package manager.


Creating root and installing the package manager

Download a compatible rootfs and install it in /jffs

cd /jffs
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz -O - | tar -zxf -

Download the opkg package manager which allows reconfiguring paths
wget "http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_*.ipk"
ipkg -d /jffs/ install opkg_*.ipk

Alternative 1 – relocated

Create your opkg configuration (using echo to allow copy/paste without switching to vi)
echo "src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/" > /jffs/etc/opkg_relocated.conf
echo "dest root /jffs" >> /jffs/etc/opkg_relocated.conf
echo "dest ram /tmp" >> /jffs/etc/opkg_relocated.conf
echo "lists_dir ext /jffs/var/opkg-lists" >> /jffs/etc/opkg_relocated.conf

You now have a second root installed in /jffs with its package manager, but we need to fix runtime binaries and libraries paths.
Create the setup script in your jffs root:
echo "export LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib:/lib/:/usr/lib" > /jffs/setup.relocated
echo "export PATH=/jffs/bin:/jffs/sbin:/jffs/usr/sbin:/jffs/usr/bin:/bin:/sbin" >> /jffs/setup.relocated
echo "alias opkg='opkg -f /jffs/etc/opkg_relocated.conf'" >> /jffs/setup.relocated
chmod +x /jffs/setup.relocated

Initialize your environment when you need to use it
. /jffs/setup.relocated

Alternative 2 – chroot’ed

Here’s a better alternative relying on chroot, but needs to have completed alternative 1′s steps first. (or you won’t be able to install chroot)

Install chroot

opkg install chroot

Create the setup script for this configuration


echo "BIND_DONE=\`mount | grep /jffs/proc\`" > /jffs/setup.chroot
echo "if [ -z \"\$BIND_DONE\" ]; then for fs in dev sys mnt proc ; do mount --bind /\$fs /jffs/\$fs ; mount --bind /tmp/var /jffs/tmp/ ; done ; fi" >> /jffs/setup.chroot
echo "mkdir /var/lock" >> /jffs/setup.chroot
echo "/jffs/usr/sbin/chroot /jffs" >> /jffs/setup.chroot
chmod +x /jffs/setup.chroot

Create a regular opkg configuration to make it work inside chroot

echo "src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/" > /jffs/etc/opkg.conf
echo "dest root /" >> /jffs/etc/opkg.conf
echo "dest ram /tmp" >> /jffs/etc/opkg.conf
echo "lists_dir ext /var/opkg-lists" >> /jffs/etc/opkg.conf
rm /jffs/etc/opkg/xwrt.conf ; ln -s /etc/opkg.conf /jffs/etc/opkg/xwrt.conf
cp /etc/resolv.conf /jffs/etc/resolv.conf

Initialize your environment when you need to use it
. /jffs/setup.chroot

Finally

don’t forget to fetch the packages list:

opkg update
You can now install any package you want.