gnu_radio_docker_benchmark_example
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| gnu_radio_docker_benchmark_example [2023/08/29 16:36] – Rephase section on non interactive scenario cmorin | gnu_radio_docker_benchmark_example [2025/10/06 10:58] (current) – [Submitting the task] cmorin | ||
|---|---|---|---|
| Line 13: | Line 13: | ||
| < | < | ||
| - | you@yourpc: | + | you@yourpc: |
| - | you@yourpc: | + | you@yourpc: |
| </ | </ | ||
| Line 34: | Line 34: | ||
| < | < | ||
| root@yourpcwdocker: | root@yourpcwdocker: | ||
| - | root@yourpcwdocker: | + | root@yourpcwdocker: |
| </ | </ | ||
| - | Let's go over each one of the files in this example: | + | Let's go over each one of the files in this `ofdm_benchmark` folder: |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| Here, this is all the modifications we need to do in order to prepare our experiment. When it is working properly, you can exit the container with Ctrl + d. Now, let's save our updated container as a new docker image. We can then push it on dockerhub (dockerhub is a repository of docker images, you need to create an account on it). | Here, this is all the modifications we need to do in order to prepare our experiment. When it is working properly, you can exit the container with Ctrl + d. Now, let's save our updated container as a new docker image. We can then push it on dockerhub (dockerhub is a repository of docker images, you need to create an account on it). | ||
| Line 114: | Line 114: | ||
| < | < | ||
| - | you@yourpc: | + | you@yourpc: |
| </ | </ | ||
| Line 128: | Line 128: | ||
| container: | container: | ||
| - image: [DOCKER USERNAME]/ | - image: [DOCKER USERNAME]/ | ||
| - | command: [PATH/TO]/benchmark_rx.py --antenna=" | + | command: |
| passive: true | passive: true | ||
| Line 134: | Line 134: | ||
| container: | container: | ||
| - image: [DOCKER USERNAME]/ | - image: [DOCKER USERNAME]/ | ||
| - | command: [PATH/TO]/benchmark_tx.py --antenna=" | + | command: |
| </ | </ | ||
| - | | + | |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | |
| * '' | * '' | ||
| Line 151: | Line 150: | ||
| ## Access Airlock | ## Access Airlock | ||
| - | You can now access the Airlock | + | You can now access the Airlock |
| < | < | ||
| Line 182: | Line 181: | ||
| And now we have a new file called '' | And now we have a new file called '' | ||
| - | |||
| ## Submitting the task | ## Submitting the task | ||
| Line 189: | Line 187: | ||
| First we need to reserve the CorteXlab room: | First we need to reserve the CorteXlab room: | ||
| - | I a new browser window open the [CorteXlab web app](http:// | + | In a new browser window, open the [CorteXlab web app](http:// |
| {{ :: | {{ :: | ||
| Line 223: | Line 221: | ||
| < | < | ||
| you@srvairlock: | you@srvairlock: | ||
| - | Task with id 15 enqueued user < | + | 15 |
| </ | </ | ||
| Line 262: | Line 260: | ||
| < | < | ||
| # From node 14 | # From node 14 | ||
| - | root@mnode14: | + | root@mnode14: |
| # From node 16 | # From node 16 | ||
| - | root@mnode16: | + | root@mnode16: |
| </ | </ | ||
| Line 273: | Line 271: | ||
| < | < | ||
| - | linux; GNU C++ version | + | [INFO] [UHD] linux; GNU C++ version |
| + | [INFO] [USRP2] Opening a USRP2/ | ||
| + | [INFO] [USRP2] Current recv frame size: 1472 bytes | ||
| + | [INFO] [USRP2] Current send frame size: 1472 bytes | ||
| + | [WARNING] [UDP] The send buffer could not be resized sufficiently. | ||
| + | Target sock buff size: 2500000 bytes. | ||
| + | Actual sock buff size: 1048576 bytes. | ||
| + | See the transport application notes on buffer resizing. | ||
| + | Please run: sudo sysctl -w net.core.wmem_max=2500000 | ||
| + | [WARNING] [UDP] The send buffer could not be resized sufficiently. | ||
| + | Target sock buff size: 2500000 bytes. | ||
| + | Actual sock buff size: 1048576 bytes. | ||
| + | See the transport application notes on buffer resizing. | ||
| + | Please run: sudo sysctl -w net.core.wmem_max=2500000 | ||
| + | [WARNING] [UDP] The send buffer could not be resized sufficiently. | ||
| + | Target sock buff size: 2500000 bytes. | ||
| + | Actual sock buff size: 1048576 bytes. | ||
| + | See the transport application notes on buffer resizing. | ||
| + | Please run: sudo sysctl -w net.core.wmem_max=2500000 | ||
| + | [INFO] [MULTI_USRP] | ||
| + | [INFO] [MULTI_USRP] | ||
| + | Packet Comparator0 :info: Received packet num 1 with a BER of 0.0445 | ||
| + | Packet Comparator0 :info: Received packet num 2 with a BER of 0.0388 | ||
| + | Packet Comparator0 :info: Received packet num 3 with a BER of 0.0357 | ||
| + | Packet Comparator0 :info: Received packet num 4 with a BER of 0.0367 | ||
| + | Packet Comparator0 :info: Received packet num 5 with a BER of 0.0409 | ||
| + | Packet Comparator0 :info: Received packet num 6 with a BER of 0.0656 | ||
| + | Packet Comparator0 :info: Received packet num 7 with a BER of 0.0596 | ||
| + | Packet Comparator0 :info: Received packet num 8 with a BER of 0.0419 | ||
| + | Packet Comparator0 :info: Received packet num 9 with a BER of 0.0435 | ||
| + | Packet Comparator0 :info: Received packet num 10 with a BER of 0.0667 | ||
| + | Packet Comparator0 :info: Received packet num 11 with a BER of 0.0375 | ||
| + | Packet Comparator0 :info: Received packet num 12 with a BER of 0.0378 | ||
| - | -- Opening a USRP2/ | ||
| - | -- Current recv frame size: 1472 bytes | ||
| - | -- Current send frame size: 1472 bytes | ||
| - | -- Detecting internal GPSDO.... Found an internal GPSDO | ||
| - | -- found | ||
| - | -- Setting references to the internal GPSDO | ||
| - | -- Initializing time to the internal GPSDO | ||
| - | |||
| - | UHD Receiver: | ||
| - | UHD Args: | ||
| - | Freq: | ||
| - | LO Offset: | ||
| - | Gain: | ||
| - | Sample Rate: 2Msps | ||
| - | Antenna: | ||
| - | Subdev Sec: None | ||
| - | Clock Source: None | ||
| - | Using Volk machine: avx_64_mmx_orc | ||
| - | |||
| - | OFDM Demodulator: | ||
| - | Modulation Type: bpsk | ||
| - | FFT length: | ||
| - | Occupied Tones: | ||
| - | CP length: | ||
| - | Warning: failed to enable realtime scheduling | ||
| - | ok: False pktno: 169 n_rcvd: 1 n_right: 0 | ||
| - | ok: False pktno: 170 n_rcvd: 2 n_right: 0 | ||
| - | ok: False pktno: 171 n_rcvd: 3 n_right: 0 | ||
| - | ok: False pktno: 173 n_rcvd: 4 n_right: 0 | ||
| - | ok: False pktno: 174 n_rcvd: 5 n_right: 0 | ||
| - | ok: False pktno: 175 n_rcvd: 6 n_right: 0 | ||
| - | ok: False pktno: 176 n_rcvd: 7 n_right: 0 | ||
| - | ok: False pktno: 177 n_rcvd: 8 n_right: 0 | ||
| - | ok: False pktno: 178 n_rcvd: 9 n_right: 0 | ||
| - | ok: False pktno: 179 n_rcvd: 10 n_right: 0 | ||
| - | ok: False pktno: 180 n_rcvd: 11 n_right: 0 | ||
| - | ok: False pktno: 181 n_rcvd: 12 n_right: 0 | ||
| - | ok: False pktno: 182 n_rcvd: 13 n_right: 0 | ||
| - | ok: False pktno: 185 n_rcvd: 14 n_right: 0 | ||
| - | ok: False pktno: 186 n_rcvd: 15 n_right: 0 | ||
| - | ok: False pktno: 191 n_rcvd: 16 n_right: 0 | ||
| - | ok: False pktno: 192 n_rcvd: 17 n_right: 0 | ||
| - | ok: False pktno: 197 n_rcvd: 18 n_right: 0 | ||
| - | ok: False pktno: 203 n_rcvd: 19 n_right: 0 | ||
| ... | ... | ||
| </ | </ | ||
| Let's try to understand it: | Let's try to understand it: | ||
| - | * The first 9 lines correspond to the UHD messages | + | * The first 21 lines correspond to the UHD messages |
| - | * The next 16 lines correspond to the GNU Radio messages and radio configuration parameters | + | * The lines starting with '' |
| - | * There might be a warning message about realtime scheduling that can be safely ignored | + | * Packet number. This should increase regularly. Missing elements in the sequence |
| - | * The lines starting with '' | + | * Bit Error Rate. Computed only on the current packet |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | As can be seen, there' | + | |
| If you decide to directly run your experiment in the '' | If you decide to directly run your experiment in the '' | ||
| Line 344: | Line 324: | ||
| you@srvairlock: | you@srvairlock: | ||
| you@srvairlock: | you@srvairlock: | ||
| - | node14.tgz | + | node14 |
| </ | </ | ||
| - | So we see that we have a folder for each task and inside each folder one compressed file per participant node. Let's extract one of those files and see what's inside: | + | So we see that we have a folder for each task and inside each folder one folder |
| < | < | ||
| - | you@srvairlock: | ||
| - | you@srvairlock: | ||
| - | node14 | ||
| you@srvairlock: | you@srvairlock: | ||
| you@srvairlock: | you@srvairlock: | ||
| - | benchmark_rx.py receive_path.pyc | + | task_XXXX_container_0 |
| - | benchmark_tx.py scenario.yaml | + | task_XXXX_container_0.log.stdout |
| - | receive_path.py | + | task_XXXX_container_0.create.stderr |
| + | task_XXXX_container_0.start.stderr | ||
| </ | </ | ||
| - | We see that all of the files we used to create | + | We see a series |
| + | * create: Downloading of image file | ||
| + | * start: Start of container | ||
| + | * log: Execution of specified command | ||
| + | * wait: Waiting period before closure | ||
| + | * kill: Task cleanup | ||
| + | |||
| + | Create, start, wait, and Kill should not have anything in their .stderr logs. | ||
| + | The most interesting | ||
| + | |||
| + | The `task_XXXX_container_0` folder contains all the files that have changed during the execution of the container. | ||
| + | Here, it only contains internal cache and log files that are not useful to us, but if your task records data in a file, it will show up here. | ||
| - | * '' | ||
| - | * '' | ||
| ## What next? | ## What next? | ||
gnu_radio_docker_benchmark_example.1693319797.txt.gz · Last modified: by cmorin
