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 [2024/03/08 15:59] (current) – 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 223: | Line 222: | ||
< | < | ||
you@srvairlock: | you@srvairlock: | ||
- | Task with id 15 enqueued user < | + | 15 |
</ | </ | ||
Line 262: | Line 261: | ||
< | < | ||
# From node 14 | # From node 14 | ||
- | root@mnode14: | + | root@mnode14: |
# From node 16 | # From node 16 | ||
- | root@mnode16: | + | root@mnode16: |
</ | </ | ||
Line 273: | Line 272: | ||
< | < | ||
- | 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 325: | ||
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: 2023/08/29 16:36 by cmorin