X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre-iokit%2Fsgpdd-survey%2Fsgpdd-survey;h=8edd1e8e6c020da532dc313cf72608a5da35df94;hb=9c6d90191a7d7685d98aee7fb49ff6c23e3956ff;hp=4082720ab3e476c48824ce8b7c3fc9e9d609263c;hpb=90e1ec3035c82ae9cc1ad471c0c8cad7d448f23f;p=fs%2Flustre-release.git diff --git a/lustre-iokit/sgpdd-survey/sgpdd-survey b/lustre-iokit/sgpdd-survey/sgpdd-survey index 4082720..8edd1e8 100755 --- a/lustre-iokit/sgpdd-survey/sgpdd-survey +++ b/lustre-iokit/sgpdd-survey/sgpdd-survey @@ -38,12 +38,27 @@ boundary=${boundary:-1024} thrlo=${thrlo:-1} thrhi=${thrhi:-4096} +# NUMA support +# User provided script that returns a cpu list from a specified device. +# Implementation depends on the type of device (scsi/raw, with/without +# multipath, technology fc/sas/ib) +# For example: +# $ cat bin/dev2cpus +# #!/bin/bash +# dev=$(basename $1) +# pci=$(readlink -f /sys/class/block/$dev | cut -d/ -f1-5) +# cat ${pci}/local_cpulist +dev2cpus=${dev2cpus:-""} + ##################################################################### # leave the rest of this alone unless you know what you're doing... # and max # threads one instance will spawn SG_MAX_QUEUE=16 +# numactl command +NUMACTL=${NUMACTL:-"/usr/bin/numactl"} + unique () { echo "$@" | xargs -n1 echo | sort -u } @@ -123,6 +138,14 @@ for d in $scsidevs $rawdevs; do done unique_hosts=(`unique ${hosts[@]}`) +# get device cpu list +devcpus=() +if [ -n "$dev2cpus" ]; then + for ((i=0; i < $ndevs; i++)); do + devcpus[$i]=$(remote_shell ${hosts[$i]} $dev2cpus ${devs[$i]}) + done +fi + # map given device names into SG device names if [ "$scsidevs" ]; then # make sure sg kernel module is loaded @@ -277,8 +300,14 @@ for ((rsz=$rszlo;rsz<=$rszhi;rsz*=2)); do outf="of=$dev" skip=seek fi + if [ -n "${devcpus[$i]}" -a -x "$NUMACTL" ]; then + numacmd="$NUMACTL --physcpubind=${devcpus[$i]} --localalloc" + else + numacmd="" + fi for ((j=0;j> ${cmdsf}_${host} \ + "$numacmd " \ "sgp_dd 2> ${tmpf}_${i}_${j} $inf $outf " \ "${skip}=$((boundary+j*blocks)) " \ "thr=$((thr/crg)) count=$count bs=${bs[$i]} " \