[stgt] TGTD io performance about 1/8th of NFS on same server

John Pletka jpletka at abraxis.com
Wed May 2 21:46:33 CEST 2012

I'm running scsi-target-utils-1.0.22 on a CentOS 6.0 quad-core server and am
seeing very poor performance compared to a NFS share on that same server.
Hopefully someone here can suggest some configuration tweaks that can help

Some evidence that might help:
1) Storage server is running software RAID6, quad-core server with 8G of
RAM.  OS is installed on a compact-flash card, no swap, storage on 10x2TB
7200 RPM SATA disks
2) The iSCSI target is a sparse file, formatted to ext3 by the client
machine.  The sparse file resides on a XFS partition on the storage server
3) Client is 32-bit Centos 5.6, runing
4) tgtd consistently uses 100% of one of the CPU cores (may not be
5) Speed tested by "dd if=/dev/zero of=/mnt/iscsi/100Mtest.img bs=1M
6) The iscsi mount gets about 6 MBps
7) A NFS mount on the same client to the same server gets about 30MBps
8) The storage server has 10 iscsi targets, each 500GB sparse files, on
average about 20% full
9) The /var/log/messages has the following showing up every 30 minutes or so
May  2 10:36:42 san2 tgtd: abort_task_set(1114) found 8000000b 0
May  2 10:36:42 san2 tgtd: abort_cmd(1090) found 8000000b 6

I realize the sparse file vs direct directory write can account for a bit of
the difference, but that seems extreme.

here is my /etc/sysctl.conf:

# Kernel sysctl configuration file for Red Hat Linux
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Results of iostat:
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.00    0.00   15.98   12.98    0.00   68.04

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
md2             393.64      4124.07      5736.80 66942941503 93121090478
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

More information about the stgt mailing list