Re: RHEL 5.3

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

 



FUJITA Tomonori schrieb:
On Wed, 11 Mar 2009 09:01:50 +0100
Tomasz Chmielewski <mangoo@xxxxxxxx> wrote:

FUJITA Tomonori schrieb:
RHEL 5.3 release note says (I think that some of you guys already know
this):

=
iSCSI target capability

The iSCSI target capability, delivered as part of the Linux Target
(tgt) framework, moves from Technology Preview to full support in Red
(...)

http://www.redhat.com/docs/manuals/enterprise/


We need to be more serious. :) Hopefully, this would attract more
users to tgt.

Feel feel to post what features you want, what areas need to be fixed,
etc.
The only thing that bothers me is target/lun limit, caused by libc pthread limit. I thought it only affects 32 bit targets, but now I see it happens also with 64 bits.

I understand it's a major design problem - do you think it could be addressed? I.e., use prefork model used by Apache and just launch more tgtd processes?

I'm not sure Apache uses such model, 'client per process with
preforking) because it sucks (I guess it used the model):

http://www.kegel.com/c10k.html

Apache binary can be build to run in different modes: prefork, worker etc.


The only reason we have to use pthread is that Linux AIO is
broken. I've been waiting for the new AIO mechanism:

http://lwn.net/Articles/316193/

It would improve the performance too.


Anyway, the target/lun limit problem is bad. So here's a patch to fix
it. I've not tested it much. So let me know how it works.

Great! I applied the patch to 0.9.4.

On a 32 bit x86 system with 256 MB RAM I created 20000 targets,
each with one lun (without connecting any initiators).

Later, I added another one target with 4200 luns.

Should be enough for a typical home server usage ;)


In all, memory usage is:

# free
            total       used       free     shared    buffers     cached
Mem:        248424     153404      95020          0        160      16944
-/+ buffers/cache:     136300     112124
Swap:      3145720     169624    2976096


There are the issues I found:

1) "tgtadm --op show --mode target", which:
- doesn't list all targets
- output for the last target is sometimes not full, i.e.:

Target 19836: iqn.2007-02.com.example:test.break19836
   System information:
       Driver: iscsi
       State: ready
   I_T nexus information:
   LUN information:
       LUN: 0
           Type: controller
           SCSI ID: deadbeaf19836:0
           SCSI SN: beaf198360
           Size: 0 MB
           Online: Yes
           Removable media: No
           Backing store: No backing store
       LUN: 1
           Type: disk
           SCSI ID: deadbeaf19836:1
           SCSI SN: beaf198361
           Size: 1024 MB
           Online: Yes
           Removable media: No
           Backing store: /dev/sda
   Account information:
   Asuperthecus:/mnt/1#

Note that the last piece of information outputted by tgtadm is:

   Account information:
   A

And it missed some targets up to 20000.

Or, a similar output when there are lots of luns (4200):

       LUN: 3431
           Type: disk
           SCSI ID: deadbeaf20001:3431
           SCSI SN: beaf200013431
           Size: 1024 MB
           Online: Yes
           Removable media: No
           Backing store: /dev/sda
       LUN: 3432
           Type: disk
           SCSI ID: deadbeaf20001:3432
           SCSI SN: beaf200013432
           Size: 1024 MB
  superthecus:/mnt/1#


2) running "iscsiadm -m discovery -t sendtargets -p <TARGET_IP> while we keep
adding new targets breaks the target
(i.e. you can't add any new targets: showing target is not possible).


To reproduce:

tgtd
i=1
while [ $i -ne 20000 ] ; do
   echo tgtadm --lld iscsi --op new --mode target --tid $i -T iqn.2007-02.com.example:test.break$i
   tgtadm --lld iscsi --op new --mode target --tid $i -T iqn.2007-02.com.example:test.break$i
   echo tgtadm --lld iscsi --op new --mode logicalunit --tid $i --lun 1 -b /dev/sda
   tgtadm --lld iscsi --op new --mode logicalunit --tid $i --lun 1 -b /dev/sda
   [ $? -ne 0 ] && echo Oooops && sleep 10m
   tgtadm --lld iscsi --op bind --mode target --tid $i -I ALL
   i=$((i+1))
done


On the initiator, run - you will see problems like below:

# iscsiadm -m discovery -t sendtargets -p 192.168.111.177
iscsiadm: Connection to Discovery Address 192.168.111.177 closed

# iscsiadm -m discovery -t sendtargets -p 192.168.111.177
iscsiadm: buffer size 32768 too small for data length 68010

# iscsiadm -m discovery -t sendtargets -p 192.168.111.177
iscsiadm: socket 3 header read timed out
iscsiadm: Login I/O error, failed to receive a PDU
iscsiadm: retrying discovery login to 192.168.111.177
iscsiadm: socket 3 header read timed out
iscsiadm: Login I/O error, failed to receive a PDU
iscsiadm: retrying discovery login to 192.168.111.177


3) even when we use a much smaller number of targets (i.e. 350), running:

# iscsiadm -m discovery -t sendtargets -p 192.168.111.177

succeeds for the first time, but the second run fails (i.e., tgtd does not answer).

Maximum number of targets with one lun which worked for me was 96 (on 32 bit).
With 97, it was failing.

When stracing, I can see:

[pid 2108] semtimedop(294912, 0x1, 1, {4294901760, 3266314240}) = 0 [pid 2108] semop(294912, 0x77eafe46, 1) = 0 [pid 2108] open("/dev/tty", O_RDWR|O_NONBLOCK|O_NOCTTY) = -1 ENXIO (No such device or address) [pid 2108] writev(2, [{"*** glibc detected *** ", 23}, {"free(): invalid next size (norma"..., 34}, {": 0x", 4}, {"08f6a010", 8}, {" ***\n", 5}], 5) = 74 [pid 2108] rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 [pid 2108] tgkill(2108, 2108, SIGABRT) = 0 [pid 2108] --- SIGABRT (Aborted) @ 0 (0) --- Process 2108 detached [pid 2118] +++ killed by SIGABRT +++ Process 2118 detached [pid 2117] +++ killed by SIGABRT +++ Process 2117 detached [pid 2116] +++ killed by SIGABRT +++ Process 2116 detached [pid 2115] +++ killed by SIGABRT +++ Process 2115 detached [pid 2114] +++ killed by SIGABRT +++ Process 2114 detached [pid 2113] +++ killed by SIGABRT +++ Process 2113 detached [pid 2112] +++ killed by SIGABRT +++ Process 2112 detached [pid 2111] +++ killed by SIGABRT +++ Process 2111 detached [pid 2110] +++ killed by SIGABRT +++

--
Tomasz Chmielewski
http://wpkg.org
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux SCSI]     [Linux RAID]     [Linux Clusters]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]

  Powered by Linux