[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

iscsi-target OR tgt?



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!



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]