[stgt] stgtd 0.9.3 : Read-Errors using iser transport

Dr. Volker Jaenisch volker.jaenisch at inqbus.de
Fri Feb 20 16:23:42 CET 2009


Hi Or!

Extended my tests on a second pair of servers with similiar but 
different hardware with same software configuration. Stock debian 
(lenny) kernel 2.6.26-1-amd64, and Debian IB-Stack, and stgt in version 
0.9.0 and 0.9.3.

System pair A
Supermicro board
2 x AMD Opteron Quadcore
32 GB RAM
Mellanox Infinihost III

System pair B
Asus board
1 x AMD Opteron Dualcore
8 GB RAM
Mellanox ConnectX

STGT 0.9.3 :

System A and System B

        Cores
Threads 1         2 or more
1       fail      fail
2       fail      fail
4       fail      fail


STGT 0.9.0 :
System A

        Cores
Threads 1         2 or more
1       run       fail
2       fail      fail
4       fail      fail


STGT 0.9.0 :
System B

        Cores
Threads 1         2
1       run       run
2       fail      fail
4       fail      fail

Conclusion: There are two independend errors.

Error One : Was introduced (8/2008) after stgt version 0.9.0 wich 
affects single Memory-Controller
as well as Dual-Memory-Controller Systems.

Error Two : Is older than error One (firstly documented 2/2008 on stgt). 
It has something to do with the number of active cores 
(Memory-Controllers) and/or the number of simultaneous threads.

On System B with only one physical CPU and therefore only one memory 
controller using version 0.9.0 cures error One. For one or two cores 
this systems with one thread runs errorfree. But error Two is still lurking.
Doing parallel access System B fails, too.

The behavior of System A with two memory-conrollers show in comparison 
System B the additional influence
of the number of Memory-Controllers. If using 2 or more cores the read 
error already ocures with one single thread.

The new test-script with threading

import random
import os
import time
import threading

#writing
writeCmd = 'lmdd if=internal of=/dev/sdc opat=1 bs=1M count=1000'
readCmd = 'lmdd of=internal if=/dev/sdc ipat=1 bs=1M count=1000 mismatch=10'
maxThreads = 1

def tee( cmd ):
    print cmd
    os.system( cmd )

tee(  writeCmd )

def readFunc():
    tee( readCmd )

while True:
#    sleepTime = random.randrange(0,10)
    sleepTime = 10
    print 'sleeping %s seconds ..' % sleepTime
    time.sleep( sleepTime )

    print 'starting %s threads ..' % maxThreads
    threadList = []
    for threadID  in range( maxThreads ):
        threadList.append( threading.Thread(group=None, target=readFunc) )
    for threadID in range( maxThreads ):
        threadList[ threadID ].start()



Cheers,

Volker



-- 
====================================================
   inqbus it-consulting      +49 ( 341 )  5643800
   Dr.  Volker Jaenisch      http://www.inqbus.de
   Herloßsohnstr.    12      0 4 1 5 5    Leipzig
   N  O  T -  F Ä L L E      +49 ( 170 )  3113748
====================================================

--
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