drobo mini performance issue

I had looking for a portable high capacity storage system for a while and turns out there are two popular in the market. Drobo Mini, and the Pegasus J4 from Promise. I finally grab this drobo mini because of the recent price drop from 660US to 320US… very attractive price!

Very Slow Overall!

At the first time, I reuse my existing 2 x 5400rpm Toshiba 1TB harddisk and 2 x WD 5400rpm 500GB harddisk, I inserted them and format it as 8TB target size. Open the blackmagicdesign disk testing tool, the result is ~120MB write / ~60MB read? that is very slow! Then I read the recommendation from drobo website to add a msata SSD for acceleration, so I added a 128GB crucial m4 SSD. Re-run the test without any improvement.

Getting better in write performance

Later, I bought two latest Hitachi 7200RPM 1TB harddisk to replace the 500GB WD harddisk, by swapping the disk one by one and wait the rebuild complete, I rerun the test, the result shown ~160MB write / ~75MB read. It still darn slow! why?

Trying to figure out the root cause

I’d decide to give it a last try to replace the left by 5400rpm harddisk to the same Hitachi 7200rpm 1TB harddisk, same by swapping one by one and let it rebuild. rerun the test, the result shown ~220MB write / ~90MB read. Still very very slow, even slower the single drive.

Reset works!!

When i was really disappointed with no cure to manage it,  I press the reset button in the drobo dashboard, reformating it and rerun the test. Oops!? the result pop up ~210MB write/~260MB read! that is what I’m expecting.

Slow performance come back

When i was so exciting and transferred all file (~1TB)  back to the drobo, I rerun the disk test to ensure the drobo is in good shape, however the turn me down again. The read performance drop dramatically again, but not worst as ~90MB read, it still had ~160MB to ~200MB read inconsistently. So I’m going to find out why again. That is troublesome, and no answer in google.

Format SIZE is somehow do the trick!

I start to drill into the disk size may affect the performance, I format the drobo as 4 TB , 8TB and 16TB for testing, each time I record the performance after a fresh format and after copy those 1TB data (~200k files). The result as below

Fresh formatted  (4 x 1TB RAW)

Formatted Size Write (MB/s) Read (MB/s)
4TB 231 302
8TB 213 265
16TB 209 221

After 1TB data (~200k files)

Formatted Size Write (MB/s) Read (MB/s)
4TB 192 251
8TB 170 208
16TB 143 197

As the above result, you see the more close to raw size the more speed.

 

SSD accelerator size in comparison

Many people asking how the accelerator bay SSD size affects the drobo performance, I’d borrowed another 64GB and 256GB Plextor M5 SSD for the comparison, and I’m telling you solidly, there are NO different I can tell in backmagic disk test tool, AJA nor Xbench, don’t spent too much money on this SSD, just 64GB will be fine.

 

 

DIY Fujifilm X-M1 wireless shutter release control

Wireless shutter release for X-M1

Fujifilm X-M1 out of box do not equip a remote shutter remote or capability for third parties. You have only one choice  (RR-90) USB wired remote. As I owned X-E1 in few months ago, X-E1 works with Canon E3 compatible remote shutter release and I found that RR-80 USB (for X-E1) wired remote is a analog signal control (see http://www.trafficshaper.com/RR-80/RR-80.html). Therefore guessing X-M1 will reuse the same mechanism as X-E1, so I tried to figure out the PIN combination to simulate RR-90 and then try to integrate it with a Canon E3 compatible remote shutter release.

What you need

1. 2.5mm Jack cable 2. Micro USB Male Plug
3. Canon E3 CompatibleShutter Release (Wireless/Wired) 4. Soldering tools

Wiring

2.5 Jack PIN Micro USB PIN
Tip(Red) 5
Ring(White) 4
Ground(Black or sheild) 1

Pin explanation

Operation Combaination
AF (Haft-Press) Pin1 + Pin 4
Shutter Release (Full-Press ) Pin5 + Pin 4

Demo

Build up a iPad Plarail Patrol with Arduino + OSC

Introduction

This tutorial give you an idea to build up a iPad controlled Parail. Please read my Arduino OSC step by step howto post if you don’t know how to work with Arduino.

1. Hardware Setup

  • Show you how they connected together.
  • The network setup
  • Attach the servo on Plarail component(Rail, Station)

2. Software Setup

  • The exact Arduino coding
  • Sample TouchOSC layout

1. Hardware Setup

Let’s take a look the setup diagram, see how this connected.

  • A servo connected to Digital Pin 19, 20, 21
  • Arduino ethernet assigned a IP 192.168.0.178
  • iOS will be assigned a IP 192.168.0.12 by DHCP

Hardware Components

Components

You need the following component to construct your setup (Shown by bottom up) 1. Arduino board (Mega 2560, UNO…etc) 2. Sensor Shield (Optional) 3. Wireless Module or Wireless router (Optional if run with wired Arduino network) 3. Low power consumption servo unit, recommend a mini or micro sized servo. 4. Power supply, for example 7.4v recommend for wireless, lan, servos at the same time. 5. Wireless AP/Router, DHCP enabled. (For iPad)

Servo extension cable connected to Digital Pin 19,20,21.

The network cable connecting from the wireless module to lan module. Why? because this module only support wireless serial comm., so it cannot setup to listen network socket. Therefore, I configure the modue as a wireless AP that bridge the LAN interface with my router. you may use any router as you like instead of stacking those module like that. Please read my Arduino OSC step by step howtopost to see how to work with generic router.

Plarail Component Setup

You need to work out the servo position with your plarail component, for me, I will just patch it underneath, you may use any skill to make them work together. http://www.youtube.com/watch?v=Hv9IVDAbao0 http://www.youtube.com/watch?v=spidtmUTUuo Continue reading “Build up a iPad Plarail Patrol with Arduino + OSC”

Arduino OSC step by step howto

Introduction

This tutorial provide step by step that help you to  setup a OSC ready Arduino which allows you to send instruction to your Arduino wirelessly from your iOS/Android device by using TouchOSC.

Suppose you have basic knowledge on computer networking, and Arduino, and we are going to cover the following topics.

1. Hardware Setup

  • Show you how they connected together.
  • The network setup

2. Software Setup

  • The exact Arduino coding
  • Composing TouchOSC interface
  • TouchOSC Setup on iOS

3. The Demo

  • Show you the result of the setup

1. Hardware Setup

Setup Diagram

Let’s take a look the setup diagram, see how this connected.

  • A servo connected to Digital Pin 13
  • Arduino ethernet assigned a IP 192.168.0.178
  • iOS will be assigned a IP 192.168.0.12 by DHCP

Hardware Components

Components

You need the following component to construct your setup

1. Arduino board (Mega 2560, UNO…etc)

2. Arduino compatible ethernet Shield

3. Low power consumption servo unit, recommend a mini or micro sized servo.

4. Power supply, for example 5v, 2A

5. Wireless AP/Router, DHCP enabled.

Let’s Hook them up

Let’s start to hook them shown as below

Hookup Image
Signal Pin
Servo Power Pin

Continue reading “Arduino OSC step by step howto”

Reborn your Roland CY-8 Cymbals

Playing your Roland CY-8 Cymbal time by time, it will becoming lack of sensitivity, you have to hit it very hard to trigger the sound. It is because oxidation is happening on the sensor inside the cymbal pad.

To fix it in very low cost without replacing a brand new pad, you may just buy a 27mm Piezo Elements Sensor from ebay, and then just replace the sensor disc inside the pad. Using a solder gun, detach the old disc and replace a new one. That’s it. The new disc will work like a charm.

For the soldering tools, I suggest you to use a ~45W solder gun, beware overheating will damage the disc. Never hold the heat on the disc longer than 5sec.

Enable your iPad 2 Cover Lock/Unlock Option

iPad Cover Lock/Unlock missing? Most of you might have noticed that iPad 2 doesn’t shows the iPad Cover Lock/Unlock option in settings. That’s NOT an issue, this option automatically shows up once you attach the smart cover for first time on your iPad.


Use a piece of magnet, and touch on your iPad right upper side.

The “iPad Cover Lock / Unlock” option will then show up in “General” Setttings.

To pretend a smart cover, just stick a little piece of magnet on your foo cover :P

http://webtrickz.com/ipad-cover-lockunlock-option-missing-in-ipad-2-settings/

Firefox / thunderbird font hinting broken after upgrade ubuntu 11.04

I was encountered the font hinting/smoothing were broken on firefox/thunderbird after upgrade to ubuntu 11.04, as you see the screenshot, the title has font smoothed but the Menu,URL address and the content dosen’t.

Having reset everything in gnome by remove “.gnome2″,”.gconf”,”.gconfd” doesn’t help. Finally remove this file “.fonts.conf” in home folder did the trick.

3 Step to keep track OS memory usage by process

Tutorial

So many people asking how to keep track on the OS memory usage by process, as you know a bit about Physical Memory, Virtual Memory (VSZ), Resident Set Size (RSS), Shared Memory, Paging Memory…etc, counting RSS to determine memory usage is very common way and easier to understand for dummies like me, although it’s not a precise figure while you’re ignoring shared memory, fs cache..etc.
But anyway this tutorial is starting point to help you monitor the process RSS usage and keep tracking the usage that allows to identify peak/min.

Alright, you need to create one database or table, and one script and one cron job.

Step 1 – Create a database for storing stat data

CREATE DATABASE sysstat DEFAULT CHARACTER SET latin1;
GRANT INSERT, UPDATE, DELETE, SELECT on sysstat.* to sysstat@'localhost' identified by 'passw0rd';
USE sysstat;
CREATE TABLE 'memory' (  'id' int(11) NOT NULL auto_increment,  'date' datetime NOT NULL,  'memory' int(20) NOT NULL,  'process' varchar(300) NOT NULL,  PRIMARY KEY  ('id')) ENGINE=MyISAM AUTO_INCREMENT=21794 DEFAULT CHARSET=latin1;

Step 2 – Script

Usage:

To show all memory usage by process

./memory_stat.sh usage
[root@vm1 sbin]# ./memory_stat.sh usage
2011-05-01 01:55:39 16576 /usr/lib/courier-imap/bin/couriertls
2011-05-01 01:55:39 35576 /usr/lib/courier-imap/bin/imapd
2011-05-01 01:55:39 38832 /usr/sbin/httpd.worker
2011-05-01 01:55:39 73100 MailScanner:
2011-05-01 01:55:39 125632 clamd
2011-05-01 01:55:39 208964 /usr/libexec/mysqld
2011-05-01 01:55:39 429720 /usr/bin/php-cgi

To record into database

./memory_stat.sh record

To retrieve the usage report

./memory_stat.sh report {process} {date - optional} 
[root@vm1 sbin]# ./memory_stat.sh report php "2011-05-01 01"
php usage report on vm1.dreamerworks.net
date	memory
2011-05-01 00:00:01	471588
2011-05-01 00:05:02	468772
2011-05-01 00:10:02	470788
2011-05-01 00:15:01	471392
2011-05-01 00:20:01	472140
2011-05-01 00:25:01	469016
2011-05-01 00:30:02	469016
2011-05-01 00:35:01	469016
2011-05-01 00:40:01	472376

To housekeep the database

./memory_stat.sh housekeep

memory_stat.sh

#!/bin/bash

process=`ps aux|awk '{print $11}'|sort|uniq|grep -v -e grep -e awk -e ps -e sort -e uniq`
date=`date +%Y-%m-%d\ %H:%M:%S`
database="sysstat"
dbuser="sysstat"
password="passw0rd"
housekeepday="30"

usage(){
for PS in $process; do

echo "$date `ps aux | grep -- $PS |grep -v grep | awk '{sum +=$6}; END {print sum}'` $PS"

done
}


record() {
usage > /tmp/usage.log
mysql -u$dbuser -p$password <<EOF
use $database;
`while read date time memory process;
do
echo "insert into memory (date,memory,process) values ('$date $time','$memory','$process');"
done < /tmp/usage.log
`
EOF

rm -f /tmp/usage.log

}

housekeep() {
mysql -u$dbuser -p$password <<EOF
use $database;
delete from memory where date < CURRENT_DATE - $housekeepday;
EOF
}


report() {
if [ x$1 = "x" ];then
        echo "Usage: $0 [process]"
        exit
fi
process=$1
datetime_arg="AND date like '$2%'"
echo "$process usage report on `hostname`"
mysql -u$dbuser -p$password <<EOF
use $database;
`
echo "select date, memory from memory where process like '%$1%' $datetime_arg order by date";
`
EOF

}

case $1 in
	usage)
	usage | sort -k 3n
	;;
        housekeep)
        housekeep
        ;;
        record)
        record
        ;;
	report)
	report $2 $3
	;;
        *)
        echo "Usage: $1 (usage|record|housekeep|report [process] [date])"
        ;;
esac

Step 3 – Cron Job

crontab -e
0,5,10,15,20,25,30,35,40,45,50,55 * * * *       /usr/local/sbin/memory_stat.sh record

That’s it

At least, you may tell a bit more about which process is huger one and then you’ll able to narrow down for investigation.