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 |