The corresponding user space tools:
http://sourceforge.net/project/showfiles.php?group_id=26396
1. Performance Results =================
1.1 SETUP ======== See http://www.open-iscsi.org/cgi-bin/wiki.pl/Performance-setup
1.2 SUMMARY ============ 256K block Write: 810 MBytes/sec 256K blocks Read: 550 MBytes/sec 1K block Read: 75,000 IOPS
1.3 Disktest results ==============
256K block size WRITE operation: --------------------------------
Session #0: /dev/sda
| 2005/04/11-09:39:42 | STAT | 9796 | v1.1.12 | /dev/sda | Write throughput: 430646600.1B/s (410.70MB/s), IOPS 1642.9/s.
| 2005/04/11-09:39:43 | STAT | 9796 | v1.1.12 | /dev/sda | Write throughput: 430876514.5B/s (410.92MB/s), IOPS 1643.8/s.
Session #1: /dev/sdb
| 2005/04/11-09:40:11 | STAT | 9811 | v1.1.12 | /dev/sdb | Write throughput: 419816033.3B/s (400.37MB/s), IOPS 1601.6/s.
| 2005/04/11-09:40:12 | STAT | 9811 | v1.1.12 | /dev/sdb | Write throughput: 419868739.1B/s (400.42MB/s), IOPS 1601.8/s.
Total: ~810 MBytes/sec from a single iSCSI Initiator.
256K block size READ operation: ----------------------------------------
Session #0: /dev/sda
| 2005/04/11-09:47:00 | STAT | 9988 | v1.1.12 | /dev/sda | Read throughput: 278883766.9B/s (265.96MB/s), IOPS 1065.3/s.
| 2005/04/11-09:47:01 | STAT | 9988 | v1.1.12 | /dev/sda | Read throughput: 281018368.0B/s (268.00MB/s), IOPS 1073.2/s.
Session #1: /dev/sdb
| 2005/04/11-09:47:04 | STAT | 9976 | v1.1.12 | /dev/sdb | Read throughput: 294106843.4B/s (280.48MB/s), IOPS 1122.6/s.
| 2005/04/11-09:47:05 | STAT | 9976 | v1.1.12 | /dev/sdb | Read throughput: 294842094.9B/s (281.18MB/s), IOPS 1125.4/s.
Total: ~550 MBytes/sec from single iSCSI Initiator machine
1K block size READ operation: -----------------------------
Session #0: /dev/sda
| 2005/04/11-09:57:28 | STAT | 10067 | v1.1.12 | /dev/sda | Read throughput: 38327973.2B/s (36.55MB/s), IOPS 37430.2/s.
| 2005/04/11-09:57:29 | STAT | 10067 | v1.1.12 | /dev/sda | Read throughput: 38321291.3B/s (36.55MB/s), IOPS 37423.7/s.
Session #1: /dev/sdb
| 2005/04/11-09:57:30 | STAT | 10000 | v1.1.12 | /dev/sdb | Read throughput: 39967796.7B/s (38.12MB/s), IOPS 39031.5/s.
| 2005/04/11-09:57:31 | STAT | 10000 | v1.1.12 | /dev/sdb | Read throughput: 40131755.9B/s (38.27MB/s), IOPS 39191.6/s.
Total: ~76,000 IOPS from single iSCSI Initiator machine
2. Patches ========
The following 6 patches alltogether represent the Open-iSCSI Initiator:
Patch 1: SCSI LLDD consists of 3 files: - iscsi_if.c (iSCSI open interface over netlink); - iscsi_tcp.[ch] (iSCSI transport over TCP/IP).
Patch 2: Common header files: - iscsi_if.h (user/kernel #defines); - iscsi_proto.h (RFC3720 #defines and types); - iscsi_iftrans.h (iscsi transport interface). - iscsi_ifev.h (user/kernel events).
Patch 3: drivers/scsi/Kconfig changes.
Patch 4: drivers/scsi/Makefile changes.
Patch 5: include/linux/netlink.h changes (added new protocol NETLINK_ISCSI)
Patch 6: Documentation/scsi/iscsi.txt
3. Changelog since v5.0.0.1 (Open-iSCSI v 0.1)
===================================
* ERL=0 in kernel support
* fixed scsi discovery
* highmem fix
* more acurate asserts
* host-put fix
* r2t vs. sendhdr race fix
* minor fixes
* discovery fix, small write cleanup
* serialization between conn_destroy(), xmitworker() and data_recv()
* xmit code cleanup
* read regression fix
* more accurate command line handling
* adding tname to the node rec key
* mempool preallocation
* recv pdu OOM-safe
* fix r2t->sg
* buf_left() fix
* trim skb on alloc
* immqueue leak fix
* more accurate error reporting
* do not check for LUN on R2T receive in ERL=0.
* flush xmit queues on conn_stop()
* Ming's patch to have default port for discovery
* do not close session on bad cmd_rsp() from target
* write optimization: send iSCSI PDU header as a part of the same TCP payload
* ctask->sg vs. sg_count cleanup
* refcounting on session create/destroy fix
* unblock eh_abort() in case of TMF timedout
* 256 LUNS support fix
* race fixed: rmmod concurrent with session_destroy()
* cleanup comments (Matt Mackall) - implemented
* recovery optimization: avoid big allocations on re-open
* initial scsi_transport_iscsi implementation
* introduced host, session and connection contexts on the iscsi_if level
* iscsi_if parameters validation
* no mallocs on datapath during netlink operations in user-space for down calls
* initial resource error detection
* task abort sent after session gets reopened - fixed
* greater than 2TB support
* iscsid fork now works.
* to sync caches, delete session's LUNs before actual logout task
* added get_param(); used in iscsi transport class
* regression.sh: device parameter added
* transport register/unregister path cleanup
* transport api vs. user/kernel definitions split
* idbm node and discovery records version check
* IPC via netlink + mempool_zones initial implementation
* immediate task's data pool preallocation
* added protection from SIGTERM
* added protection from OOM-killer using oom_adj == -17
* allocate cache aligned iscsi_taskcache
* tx latency: transmitting from queuecommand() if trylock succeeds
* reduced context switching in queuecommand
* max_xmit_dlength properly negotiated
* enable Nagle
* netlink reply cleanup
* kernel/user IPC cleanup: added and implemented iscsi_ipc callback structure
* receive pool for control PDU's per-connection added
* using predefined macro for max_sg SG_ALL
* kernel IPC transport header file added
* picking unique OUI ISID for the same target based on session's SID
Regards,
Alex Aizman & Dmitry Yusupov - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html