[Stgt-devel] iSCSI target driver works without kernel patches

FUJITA Tomonori fujita.tomonori
Fri Feb 23 17:48:31 CET 2007

Some target drivers (like iSCSI) need an interface to wait for both
synchronous and asynchronous file descriptors. But upstream kernels
don't support something like BSD's kqueue yet though some candidates
are under development (e.g. kevent).

We've used EPOLL_WAIT patch to add the feature. It's supposed to be
merged to upstream, however, seems that it takes long time. And it's
not very fast and it even crashes ppc64 kernels now.

We don't like to use any kernel patches.

I modified the aio code to use a I/O helper thread to avoid this issue
(stolen from RedHat Xen blktap code). So we don't need any kernel
patches anymore. Just use 2.6.20.

This workaround will be removed when we have a interface to support
both async and sync file descriptors in upstream. And it should
provide better performance.

I've just tried the current code and IET with the default iSCSI
parameters. The performances are comparable. I guess that IET could
provide better performances with optimized parameters. However, don't
forget that tgt's performance will improve in the future with a better
event notification interface.

- tgt

disktest -PT -T1200 -h1 -K8 -B8192 -pL -ID /dev/sdc

| 2007/02/24-09:59:10 | STAT  | 28339 | v1.2.8 | /dev/sdc | Total read throughput: 34458842.5B/s (32.86MB/s), IOPS 4206.4/s.

sg_turs -t -n=10000 /dev/sdc
time to perform commands was 1.210659 secs; 8259.96 operations/sec
Completed 10000 Test Unit Ready commands with 0 errors


| 2007/02/24-10:40:40 | STAT  | 28501 | v1.2.8 | /dev/sdc | Total read throughput: 33759505.1B/s (32.20MB/s), IOPS 4121.0/s.

time to perform commands was 1.193761 secs; 8376.89 operations/sec
Completed 10000 Test Unit Ready commands with 0 errors

More information about the stgt mailing list