Performance Tuning in OmniOS
xiaclo at xiaclo.net
Tue Jan 21 16:56:59 EST 2014
First off, make sure you are comparing apples to apples. I am assuming the "default" RAID is RAIDZ on ZFS, so make sure the LVM raid is using RAID5 for comparable performance.
Generally, I wouldn't be using RAIDZ on AWS at all. The primary issue with RAID5/RAIDZ is that the IO speeds are not only limited to that of a single EBS volume, but that of the slowest EBS volume. That speed can vary with which host you get assigned to, time of day, contention from other customers, and seemingly the phase of the moon. I don't think anyone would be surprised if you ran the same test again and got completely different results. Provisioned IOPS disks will help even out extremely slow disks, but you can still get quite a bit of variance.
I would suggest moving to mirrored disks (RAID1) in both ZFS and Ubuntu. I'm not sure about LVM, but ZFS will use the mirror to even out reads (writes are harder) which should fix some of the high latency, even on normal EBS volumes. I would suggest 4 disks in a RAID 10 configuration (striping 2 mirrored pairs). Even better would be a 4-way mirror in ZFS if price isn't much of a concern. This will limit you to the capacity of a single EBS volume, but reads will use the fastest disk of the 4 disks, instead of the slowest. It also has a nice side effect of being extremely fault tolerant.
The other thing to keep in mind is that ZFS is extremely RAM hungry and read performance drops considerably when it is RAM starved, so I would ensure that Riak doesn't use the last 1 - 1.5 GB of RAM so ZFS can use it for caches.
So in summary:
- Test, test and test again on different instances, this will help even out EBS issues.
- Use mirrors, not RAID5/RAIDZ
- Use dedicated IOPS (at least for testing purposes)
- Ensure ZFS has some RAM to play with
Hope this helps,
----- Original Message -----
From: "Jared Morrow" <jared at basho.com>
To: ejhari at gmail.com
Cc: "riak-users" <riak-users at lists.basho.com>
Sent: Wednesday, 22 January, 2014 7:51:19 AM
Subject: Re: Performance Tuning in OmniOS
Oh I think OmniOS is far from hopeless. The problem you are having is the same problem you'd have if you were on ubuntu and you made a LVM raid on vanilla EBS. EBS is the problem when it comes to predictable write / read speed. People still use it, but not without careful thought and consideration. You can try using provisioned IOPS for EBS, which the m1.large supports, or ask in risk-users what other AWS users have setup. I know we have a lot of customers and OSS users running on AWS, so they are far more knowledgeable about real-world performance than I am.
On Tue, Jan 21, 2014 at 12:05 PM, Hari John Kuriakose < ejhari at gmail.com > wrote:
I am using the default raid itself.
Well, if this is the case, I will run the tests again with a different setup as you said, and get back as soon as possible. I would just like to believe that OmniOS is not too hopeless.
On Jan 21, 2014 11:17 PM, "Jared Morrow" < jared at basho.com > wrote:
What type of RAID did you chose for your spool of 5 volumes? If you chose the default of raidz, you will not be getting much of a performance boost over vanilla EBS, just a big integrity boost. Also, unless you are using provisioned IOPS for EBS, you are starting from an extremely slow base-case, so adding ZFS on top might not help matters much.
If speed is the concern, as a test I'm willing to bet if you do another test run against the two instance storage disks on that m1.large, you will probably beat those 5 EBS volumes pretty easily.
On Tue, Jan 21, 2014 at 9:22 AM, Hari John Kuriakose < ejhari at gmail.com > wrote:
I am using standard EBS devices, with a zpool in an instance comprising of five 40GB volumes.
Each of the Riak instance is of m1.large type.
I have made the following changes in zfs properties:
# My reason: the default sst block size for leveldb is 4k.
zfs set recordsize=4k tank/riak
# My reason: by default, leveldb verifies checksums automatically.
zfs set checksum=off tank/riak
zfs set atime=off tank/riak
zfs set snapdir=visible tank/riak
And I did the following with help from Basho AWS tuning docs:
projadd -c "riak" -K "process.max-file-descriptor=(basic,65536,deny)" user.riak
bash -c "echo 'set rlim_fd_max=65536' >> /etc/system"
bash -c "echo 'set rlim_fd_cur=65536' >> /etc/system"
ndd -set /dev/tcp tcp_conn_req_max_q0 40000
ndd -set /dev/tcp tcp_conn_req_max_q 4000
ndd -set /dev/tcp tcp_tstamp_always 0
ndd -set /dev/tcp tcp_sack_permitted 2
ndd -set /dev/tcp tcp_wscale_always 1
ndd -set /dev/tcp tcp_time_wait_interval 60000
ndd -set /dev/tcp tcp_keepalive_interval 120000
ndd -set /dev/tcp tcp_xmit_hiwat 2097152
ndd -set /dev/tcp tcp_recv_hiwat 2097152
ndd -set /dev/tcp tcp_max_buf 8388608
On Tue, Jan 21, 2014 at 9:12 PM, Hector Castro < hector at basho.com > wrote:
Can you please clarify what type of disk you are using within AWS?
EBS, EBS with PIOPS, instance storage? In addition, maybe some details
on volume sizes and instance types.
These details may help someone attempting to answer your question.
On Tue, Jan 21, 2014 at 8:11 AM, Hari John Kuriakose < ejhari at gmail.com > wrote:
> I am running LevelDB on ZFS in Solaris (OmniOS specifically) in Amazon AWS.
> The iops is very very low. There is no significant progress with tuning too.
> Why I chose ZFS is that since LevelDB requires the node to be stopped before
> taking a backup, I needed a filesystem with snapshot ability. And the most
> favourable Amazon community AMI seemed to be using OmniOS (fork of Solaris).
> Everything is fine, except the performance.
> I did all the AWS tuning proposed by Basho but still Basho Bench gave twice
> iops on Ubuntu as compared to OmniOS, under same conditions. Also, I am
> using riak-js client library, and its a 5 node Riak cluster with 8GB ram
> Could not yet figure out what is really causing the congestion in OmniOS.
> Any pointers will be really helpful.
> Thanks and regards,
> Hari John Kuriakose.
> riak-users mailing list
> riak-users at lists.basho.com
riak-users mailing list
riak-users at lists.basho.com
riak-users mailing list
riak-users at lists.basho.com
More information about the riak-users