- # agressive lockless i/o settings
- for node in $(osts_nodes); do
- do_node $node 'lctl set_param -n ldlm.namespaces.filter-*.max_nolock_bytes 2000000; lctl set_param -n ldlm.namespaces.filter-*.contended_locks 0; lctl set_param -n ldlm.namespaces.filter-*.contention_seconds 60'
- done
- lctl set_param -n osc.*.contention_seconds 60
- for i in $(seq 5); do
- dd if=/dev/zero of=$DIR1/$tfile bs=4k count=1 conv=notrunc > /dev/null 2>&1
- dd if=/dev/zero of=$DIR2/$tfile bs=4k count=1 conv=notrunc > /dev/null 2>&1
- done
- [ $(calc_osc_stats lockless_write_bytes) -ne 0 ] || error "lockless i/o was not triggered"
- # disable lockless i/o (it is disabled by default)
- for node in $(osts_nodes); do
- do_node $node 'lctl set_param -n ldlm.namespaces.filter-*.max_nolock_bytes 0; lctl set_param -n ldlm.namespaces.filter-*.contended_locks 32; lctl set_param -n ldlm.namespaces.filter-*.contention_seconds 0'
- done
- # set contention_seconds to 0 at client too, otherwise Lustre still
- # remembers lock contention
- lctl set_param -n osc.*.contention_seconds 0
- clear_osc_stats
- for i in $(seq 1); do
- dd if=/dev/zero of=$DIR1/$tfile bs=4k count=1 conv=notrunc > /dev/null 2>&1
- dd if=/dev/zero of=$DIR2/$tfile bs=4k count=1 conv=notrunc > /dev/null 2>&1
- done
- [ $(calc_osc_stats lockless_write_bytes) -eq 0 ] ||
- error "lockless i/o works when disabled"
- rm -f $DIR1/$tfile
- restore_lustre_params <$p
- rm -f $p
+ # agressive lockless i/o settings
+ do_nodes $(comma_list $(osts_nodes)) \
+ "lctl set_param -n ldlm.namespaces.*.max_nolock_bytes=2000000 \
+ ldlm.namespaces.filter-*.contended_locks=0 \
+ ldlm.namespaces.filter-*.contention_seconds=60"
+ lctl set_param -n osc.*.contention_seconds=60
+ for i in {1..5}; do
+ dd if=/dev/zero of=$DIR1/$tfile bs=4k count=1 conv=notrunc > \
+ /dev/null 2>&1
+ dd if=/dev/zero of=$DIR2/$tfile bs=4k count=1 conv=notrunc > \
+ /dev/null 2>&1
+ done
+ [ $(calc_stats osc.*.osc_stats lockless_write_bytes) -ne 0 ] ||
+ error "lockless i/o was not triggered"
+ # disable lockless i/o (it is disabled by default)
+ do_nodes $(comma_list $(osts_nodes)) \
+ "lctl set_param -n ldlm.namespaces.filter-*.max_nolock_bytes=0 \
+ ldlm.namespaces.filter-*.contended_locks=32 \
+ ldlm.namespaces.filter-*.contention_seconds=0"
+ # set contention_seconds to 0 at client too, otherwise Lustre still
+ # remembers lock contention
+ lctl set_param -n osc.*.contention_seconds=0
+ clear_stats osc.*.osc_stats
+ for i in {1..1}; do
+ dd if=/dev/zero of=$DIR1/$tfile bs=4k count=1 conv=notrunc > \
+ /dev/null 2>&1
+ dd if=/dev/zero of=$DIR2/$tfile bs=4k count=1 conv=notrunc > \
+ /dev/null 2>&1
+ done
+ [ $(calc_stats osc.*.osc_stats lockless_write_bytes) -eq 0 ] ||
+ error "lockless i/o works when disabled"
+ rm -f $DIR1/$tfile
+ restore_lustre_params <$p
+ rm -f $p