'''[wiki:GEC16Agenda/WiMAX-Tutorial/Streamload/07 Previous]''' == Revise, Repeat == After looking at the measurements collected by the 'wxmstat' application, we realize that the signal strength on the nodes is too high. The WiMAX CINR (a measure of signal quality) is 30 dB, which is very high, and so the maximum number of SVC layers (2) is downloaded in all cases. We want a more realistic environment, so we turn down the base station transmit power from 40 dBm to 20 dBm: {{{ wget -qO- "http://wimaxrf:5052/wimaxrf/bs/set?bs_tx_power=20" wget -qO- "http://wimaxrf:5052/wimaxrf/bs/restart" }}} Confirm that the base station power is now set to 20: {{{ wget -qO- "http://wimaxrf:5052/wimaxrf/bs/get?bs_tx_power" | xml_pp }}} should output: {{{ 25 }}} He also uses the programmable attenuation on Sandbox 4 to create a situation where signal strength varies over the duration of the experiment. To do this, he adds some properties to the beginning of his experiment: {{{ #!ruby defProperty('attUrl', "http://internal2dmz.orbit-lab.org:5054/instr/set?", "Path to use to set attenuation") }}} and changes the sequence of events in the experiment to look like this: {{{ #!ruby onEvent(:ALL_UP_AND_INSTALLED) do |event| l = [7,8,10,6,5,7,14,15,16,13,12,18,19,15,13,12,11,11,8] wait 5 system("/home/#{ENV['USER']}/getbsconf -i wimaxrf --oml-server tcp:oml:3003 --oml-id console --oml-exp-id #{Experiment.ID}") group("server").exec("/usr/bin/python -m SimpleHTTPServer") group("client1").startApplications l.each do |a| system("/usr/bin/wget -qO- \"#{property.attUrl}portA=#{property.client1}\&portB=9\&att=#{a}\"") wait 5 end group("client1").stopApplications wait 5 group("client2").startApplications l.each do |a| system("/usr/bin/wget -qO- \"#{property.attUrl}portA=#{property.client2}\&portB=9\&att=#{a}\"") wait 5 end group("client2").stopApplications wait 5 allGroups.stopApplications Experiment.done end }}} The effect of this is to change the attenuation between the WiMAX BS and the client in a fixed sequence every five seconds during the experiment. [[br]] After running this modified experiment with {{{ omf exec wmxtutor-streamload2.rb }}} and pushing the data and log files to iRODs: {{{ iarchive -e expID -c streamload }}} try creating the same plots as before from the new '''expID'''.sq3 file: * Plot table 'streamload_play' with 'chunk' on the x-axis, 'layer' on the y-axis, and group by 'oml_sender_id'. This will show you the number of layers downloaded for each of the 40 video segments, for each client. * Plot table 'wmxstat_status' with 'oml_seq' on the x-axis, 'cinr' on the y-axis, and group by 'oml_sender_id'. This will show you the WiMAX link quality as measured at each node for the duration of the experiment. Note how the WiMAX link quality changes over the duration of the experiment. Also, note that the number of layers in the video playback changes with the link quality. Does streamloading outperform streaming in average number of layers played? Try creating the following plot, for each experiment result: Plot 'streamload_play' with 'oml_sender_id' on the x-axis and 'layers' on the y-axis. This will show you the average number of layers played for each client. You can also calculate these numbers directly by running SQL commands on the result database; try (using your own '''expID'''): {{{ sqlite3 /var/lib/oml2/expID.sq3 'select oml_sender_id,avg(layers) from streamload_play group by oml_sender_id;' }}} Try running the experiment a few times. Do the results change between different experiment runs? By how much? (In our tests, streamloading had a slight advantage over streaming with respect to average number of layers downloaded per video segment). '''[wiki:GEC16Agenda/WiMAX-Tutorial/Streamload/09 Next]'''