Re: stgtd 0.9.3 : Read-Errors using iser transport

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

 



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