pScheduler
pScheduler is the replacement for perfSONAR's bwctl tool starting with perfSONAR v4.0.
GENERAL COMMAND FORMAT:
pscheduler command [ switches/args ]
TASK COMMAND FORMAT:
pscheduler task [ task-swtiches ] test [ test-switches ]
task-switches - Options that affect scheduling (how often, how many times, etc.), output format (plain text, JSON, HTML) and what host leads the test (see below).
test - What kind of test the task will do.
test-switches - Options specific to the kind of test being done.
Note that on systems with pScheduler installed, there is a shell alias called 'psc' available for convenience.
TOOL SELECTION:
The --tool switch to the task command allows specifying a tool to use in running the test:
pscheduler task --tool iperf3 throughput ...
The option can be repeated to allow any of a list of tools to run the test:
pscheduler task --tool iperf3 --tool iperf2 throughput ...
The one selected will be the first in the list that all participants have in common.
GETTING HELP:
The command-line interface will give you context-sensitive help at pretty much any point:
pscheduler --help
pscheduler task --help
pscheduler task throughput --help
More information on pScheduler is available at: http://docs.perfsonar.net/pscheduler_intro.html
bwctl to pScheduler Transition Guide
bwctl -c receive_host pscheduler task throughput --dest receive_host |
This will use your host as the sender, and run a 10 second iperf3 test. |
bwctl -c receive_host -t 30 -i 2 -w 64M pscheduler task throughput --dest receive_host --interval PT2S --window-size 64M --duration PT30S |
This will use your host as the sender, run a 30 second test, and show output every 2 secs (instead of the default of 1 sec), and the TCP window will be 64MB. |
bwctl -c receive_host -s send_host -t 30 pscheduler task throughput --source send_host --dest receive_host --duration PT30S |
This is very useful if you are not logged into one of the two endpoints. It runs a 30 second test from send_host to recv_host. |
bwctl -L 1000 -c receive_host pscheduler task --slip PT10M throughput --dest receive_host |
By default bwctl exits if it can not get a test slot within 5 minutes. Use the -L flag for heavily used servers where you might have to wait longer. |
bwctl -T iperf2 -c receive_host -s send_host -i 2 -u -b 500M pscheduler task --tool iperf2 throughput --dest receive_host --interval 2 -u --bandwidth 500M |
Use iperf2 instead of iperf3, and do a 500Mbps UDP test. |
bwctl -c receive_host -T nuttcp pscheduler task --tool nuttcp throughput --dest receive_host |
run nuttcp instead of iperf3. This will only work to another perfSONAR 4.x host. To test to a 3.x host, continue to use bwctl. |
bwctl -c receive_host -s send_host -O 5 -t 20 pscheduler task --tool iperf3 throughput --omit 5 --duration PT20S --source send_host --dest receive_host |
Use iperf3 instead of iperf, and omit the first 5 seconds of a 20 second test (removes TCP slowstart ramp up time) |
bwctl -4 -c receive_host -s send_host pscheduler task throughput --ip-version 4 --source send_host --dest receive_host |
Force test to use IPv4 instead of IPv6. |
Note: If you are running pscheduler on a host that only has the perfsonar-tools bundle, either the source or destination host must be running the full pscheduler package (e.g: perfsonar-toolkit, perfsonar-core, or perfsonar-testpoint), and you must use the --assist flag to specify which host to use as the scheduler. For example:
pscheduler task --assist send_host throughput --ip-version 4 --source send_host --dest receive_host
bwping -s send_host -c receive_host pscheduler task rtt --source send_host --dest receive_host
|
run a ping from host A to host B |
bwping -T owamp -s send_host-c receive_host -N 1000 -i .01 pscheduler task latency --dest receive host --packet-count 1000 --packet-interval .01 |
run owping from host A to host B, sending 1000 packets, spaced .01 seconds apart. |
bwping -E -c www.google.com pscheduler task rtt --dest www.google.com |
run a ping to a host not running bwctld or pScheduler |
bwtraceroute -c receive_host -s send_host pscheduler task trace --source send_host --dest receive_host |
run a tracetroute from host A to host B |
bwtraceroute -T tracepath -c receive_host -l 8192 -s send_host pscheduler task trace --length 8192 --dest receive_host |
run a tracepath from host A to host B, using a packet size of 8192 bytes. This will help find MTU issues. |
bwtraceroute -E -s send_host -c receive host pscheduler task trace --dest receive_host |
Run a traceroute from a bwctl host to a non-bwctl or pScheduler host |
The main pScheduler control port is 443. Make sure this port is not blocked by any firewalls.
Other useful pScheduler commands
pscheduler plugins tests : list all tests that pscheduler knows how to run
pscheduler plugins tools : list all tools that pscheduler knows how to run
pscheduler task clock --dest hostname : measure the clock difference between your host and a remote host
pscheduler task clock —source host1 --dest host2 : measure the clock difference between these 2 hosts
pscheduler schedule --filter-test=throughput --host hostname : show the upcoming test schedule for this host
pscheduler schedule --filter-test=throughput -PT1H --host hostname : show the tests run in the past hour
pscheduler task dns --query www.es.net --record a : measure the amount of time to do a DNS lookup