iscsi-target OR tgt?

Phil Meyer pmeyer at themeyerfarm.com
Wed Dec 16 19:04:45 UTC 2009


We have been extensively testing the feasibility of building iscsi 
target servers to replace some iscsi SAN units we have.

The reasons are many, but basically you have to move up to the 
$15,000.00 plus range in order to get a decent feature set on a 12+ 
drive unit.

Here are some features that are hard to find in an inexpensive RAID box:

Replication
Snapshots
Thin Luns
Large number of Luns per Array

To name a few.

In this regard, we have tested iscsi-target, tgt, and a couple 
commercial offerings that are based upon them.

It seems to us that tgt is in reality a rewrite of iscsi-target done by 
RedHat.  Is that a fair assessment?  The kernel modules necessary to run 
tgt are in the kernel.  The iscsi-target kernel module and base software 
need to be built by hand or downloaded from third party repositories.

The main difference seems to be that iscsi-target uses a variable number 
of child processes to handle the incoming traffic.  This is the model 
long used by NFS, and seems logical to me.  TGT appears to use a single 
daemon to manage all traffic to and from the storage and networks.  This 
single process often appears to be a bottleneck.

However, all things equal, the number of spindles involved in the target 
seems to be the most potent performance metric.

For instance:  We can achieve reasonable throughput speeds with two 
1000BT ports on 15 spindles.  Less than that and the results are less.

Two questions:

Are there specific kernel tunables that have an impact on 
iscsi-target/tgt?  I will include here the ones I have found and am using.

What is the consensus here:  tgt or iscsi-target?  Is tgt ready for 
prime time?

Comments, speculations and criticisms welcome.

Here are my tunables:

  net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_rmem = 20000000 20000000 20000000
net.ipv4.tcp_wmem = 20000000 20000000 20000000
net.ipv4.tcp_mem = 20000000 20000000 20000000
net.core.rmem_max = 8738000
net.core.wmem_max = 6553600
net.core.rmem_default = 524287
net.core.wmem_default = 524287
net.core.optmem_max = 8738000
net.core.netdev_max_backlog = 300000
net.ipv4.ipfrag_low_thresh = 196608
net.ipv4.ipfrag_high_thresh = 10485760

Thanks!





More information about the fedora-list mailing list