Skip to content

Update publication data #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion OpenXR-SDK
Submodule OpenXR-SDK updated 151 files
25 changes: 14 additions & 11 deletions librnr-experiments/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,27 @@
## Figures List
| Figure Number | Description | Origin File Location |
|---------------|-------------|---------------|
| 1 | Meta Quest Pro power use when using different bandwidth limits. | [./new_bm.ipynb](./new_bm.ipynb) |
| 1 | Meta Quest Pro power use when using different play area configurations. | [./new_bm.ipynb](./new_bm.ipynb) |
| 4 | Timing accuracy (i.e., error) of librnr over time (top plot) and as a statistical summary (bottom plot). | TODO:Add file location |
| 5 | librnr energy overhead on Meta Quest Pro (MQP) and Meta Quest 2 (MQ2). | [./analysis_BM.ipynb](./analysis_BM.ipynb) |
| 6 | librnr GPU-usage overhead on the two PCs. | [./analysis_BM.ipynb](./analysis_BM.ipynb) |
| 7 | Effect of bandwidth limitation on power consumption for the Quest Pro (MQP) and Quest 2 (MQ2) VR devices. | [./new_bm.ipynb](./new_bm.ipynb) |
| 7 | Effect of play area settings on power consumption
for the Quest Pro (MQP) and Quest 2 (MQ2) VR devices. | [./new_bm.ipynb](./new_bm.ipynb) |
| 8 | Effect of bandwidth limits on Meta Quest 2 frames per second (FPS). | [./new_systemmetrics.ipynb](./new_systemmetrics.ipynb) |
| 9 | Cumulative probability density function for the frames per second (FPS) on Meta Quest. | [./fps_bandwithlimit_analysis.ipynb](./fps_bandwithlimit_analysis.ipynb) |
| 10 | Comparison in workload offloading between Meta Quest 2 (MQ2) and Meta Quest Pro (MQP). | [./analysis_BM.ipynb](./analysis_BM.ipynb) |

## Trace List
| Trace Folder Name | Game / App | Duration of trace | PC | VR | Network Conditions | Additional Info | Location | Paper Section |
|------------------------------------|:----------:|:-----------------:|:----:|:---------:|:-----------------------------:|-----------------------|----------|---------------|
| clumsy-bandwidth-100Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 100 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-100Mbps/Quest-2](./clumsy-bandwidth-100Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-100Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 100 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-100Mbps/Quest-Pro](./clumsy-bandwidth-100Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-80Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 80 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-80Mbps/Quest-2](./clumsy-bandwidth-80Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-80Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 80 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-80Mbps/Quest-Pro](./clumsy-bandwidth-80Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-50Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 50 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-50Mbps/Quest-2](./clumsy-bandwidth-50Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-50Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 50 Mbps bandwith limitation | 1 recording, 3 replays | [clumsy-bandwidth-50Mbps/Quest-Pro](./clumsy-bandwidth-50Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-30Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 30 Mbps bandwith limitation | 1 recording, 3 replays | [clumsy-bandwidth-30Mbps/Quest-2](./clumsy-bandwidth-30Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-30Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 30 Mbps bandwith limitation | 1 recording, 3 replays | [clumsy-bandwidth-30Mbps/Quest-Pro](./clumsy-bandwidth-30Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Section 5.2 |
| clumsy-bandwidth-100Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 100 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-100Mbps/Quest-2](./clumsy-bandwidth-100Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-100Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 100 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-100Mbps/Quest-Pro](./clumsy-bandwidth-100Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-80Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 80 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-80Mbps/Quest-2](./clumsy-bandwidth-80Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-80Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 80 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-80Mbps/Quest-Pro](./clumsy-bandwidth-80Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-50Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 50 Mbps bandwidth limitation | 1 recording, 3 replays | [clumsy-bandwidth-50Mbps/Quest-2](./clumsy-bandwidth-50Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-50Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 50 Mbps bandwith limitation | 1 recording, 3 replays | [clumsy-bandwidth-50Mbps/Quest-Pro](./clumsy-bandwidth-50Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-30Mbps/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 30 Mbps bandwith limitation | 1 recording, 3 replays | [clumsy-bandwidth-30Mbps/Quest-2](./clumsy-bandwidth-30Mbps/Quest-2/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-bandwidth-30Mbps/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 30 Mbps bandwith limitation | 1 recording, 3 replays | [clumsy-bandwidth-30Mbps/Quest-Pro](./clumsy-bandwidth-30Mbps/Quest-Pro/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-dropchance-0.05/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 5% drop chance | 1 recording, 3 replays | [clumsy-dropchance-0.05/Quest-2](./clumsy-dropchance-0.05/Quest-2/BeatSaber/PopStars-Medium/) | Not used |
| clumsy-dropchance-0.05/Quest-Pro | Beat Saber | 219.424 | PC-A | Quest Pro | 5% drop chance | 1 recording, 3 replays | [clumsy-dropchance-0.05/Quest-Pro](./clumsy-dropchance-0.05/Quest-Pro/BeatSaber/PopStars-Medium/) |Not used |
| clumsy-dropchance-0.025/Quest-2 | Beat Saber | 229.161 | PC-B | Quest 2 | 2.5% drop chance | 1 recording, 3 replays | [clumsy-dropchance-0.025/Quest-2](./clumsy-dropchance-0.025/Quest-2/BeatSaber/PopStars-Medium/) | Not used |
Expand All @@ -36,9 +37,11 @@
| swap-vr/Quest-2 | Beat Saber | 222.146 | PC-A | Quest 2 | - | 1 recording, 10 replays | [swap-vr/Quest-2](./swap-vr/Quest-2/BeatSaber/PopStars-Medium/) | Section 5.4 |
| swap-vr/Quest-Pro | Beat Saber | 233.927 | PC-B | Quest Pro | - | 1 recording, 10 replays | [swap-vr/Quest-Pro](./swap-vr/Quest-Pro/BeatSaber/PopStars-Medium/) | Section 5.4 |
| haptic-traces/Quest-2 | Beat Saber | 188.766, 163.524, 240.221 | PC-B | Quest 2 | - | 3 recordings, 1 replay per recording | [haptic-traces/Quest-2](./haptic-traces/Quest-2/BeatSaber/) | Section 4.1 |
| investigation/Quest-Pro | Beat Saber | 233.927 | PC-B | Quest Pro | - | 1 recording, 55 replays | [investigation/Quest-Pro](./investigation/Quest-Pro/BeatSaber/PopStars-Medium/) | Section 5.2 |
| investigation/Quest-2 | Beat Saber | 188.766, 163.524, 240.221 | PC-B | Quest 2 | - | 1 recording, 25 replays | [investigation/Quest-2](./investigation/Quest-2/BeatSaber/) | Section 5.2 |

Where:
* `PC-A`: Windows 11 system with a water-cooled AMD Ryzen 5 7600X CPU, a GeForce RTX 3080 GPU, and a motherboard that supports Wi-Fi 6E (802.11ax).
* `PC-A`: Windows 11 system with a liquid-cooled AMD Ryzen 5 7600X CPU, a GeForce RTX 3080 GPU, and a motherboard that supports Wi-Fi 6E (802.11ax).
* `PC-B`: Windows 10 system with an air-cooled AMD Ryzen 5 7600X CPU, a GeForce RTX 4070 GPU, and a motherboard that supports Wi-Fi 6E (802.11ax).


Expand Down
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file added librnr-experiments/figures/first_pager_new.pdf
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
---
title: "Experiment"
output:
github_document:
toc: yes
toc_depth: 1
dev: svg
---

# Description

# Results

```{r setup, message = FALSE}

library(tidyverse)
theme_set(theme_bw())
library(knitr)
library(forcats)
library(data.table)
library(cowplot)
library(gghighlight)
library(zoo)
library(RColorBrewer)

saveplot <- function(filename, ...) {
ggsave2(filename, ...)
knitr::plot_crop(filename)
}
```

## Frame Rate

```{r frame_rate}
fps <- system('grep -Po "(?<=FPS=)[0-9]+" logcat_VrApi.log', intern = TRUE)
data <- tibble(fps) %>% mutate(fps = as.numeric(fps)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=fps)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```
## Power Draw

### CPU Frequency

```{r battery_headset}
if (file.exists("logcat_VrApi.log")) {
cpu_freq <- system('grep -Po "(?<=CPU4/GPU=)[0-9]/[0-9],[0-9]+/[0-9]+(?=MHz,OC)" logcat_VrApi.log | cut -d, -f 2 | cut -d/ -f 1', intern = TRUE)
data <- tibble(cpu_freq) %>% mutate(cpu_freq = as.numeric(cpu_freq)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=cpu_freq)) +
geom_line() +
ylim(0, NA) +
labs(y = "MHz", x = "time [s]") +
theme_half_open() + background_grid()
}
```
### GPU Frequency

```{r battery_headset}
if (file.exists("logcat_VrApi.log")) {
gpu_freq <- system('grep -Po "(?<=CPU4/GPU=)[0-9]/[0-9],[0-9]+/[0-9]+(?=MHz,OC)" logcat_VrApi.log | cut -d, -f 2 | cut -d/ -f 2', intern = TRUE)
data <- tibble(gpu_freq) %>% mutate(gpu_freq = as.numeric(gpu_freq)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=gpu_freq)) +
geom_line() +
ylim(0, NA) +
labs(y = "MHz", x = "time [s]") +
theme_half_open() + background_grid()
}
```
### CPU Level

```{r battery_headset}
if (file.exists("logcat_VrApi.log")) {
cpu_freq <- system('grep -Po "(?<=CPU4/GPU=)[0-9]/[0-9],[0-9]+/[0-9]+(?=MHz,OC)" logcat_VrApi.log | cut -d, -f 1 | cut -d/ -f 1', intern = TRUE)
data <- tibble(cpu_freq) %>% mutate(cpu_freq = as.numeric(cpu_freq)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=cpu_freq)) +
geom_line() +
ylim(0, NA) +
labs(y = "Level", x = "time [s]") +
theme_half_open() + background_grid()
}
```

### GPU Level

```{r battery_headset}
if (file.exists("logcat_VrApi.log")) {
gpu_freq <- system('grep -Po "(?<=CPU4/GPU=)[0-9]/[0-9],[0-9]+/[0-9]+(?=MHz,OC)" logcat_VrApi.log | cut -d, -f 1 | cut -d/ -f 2', intern = TRUE)
data <- tibble(gpu_freq) %>% mutate(gpu_freq = as.numeric(gpu_freq)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=gpu_freq)) +
geom_line() +
ylim(0, NA) +
labs(y = "Level", x = "time [s]") +
theme_half_open() + background_grid()
}
```

## Battery Levels

### Headset

```{r battery_headset}
if (file.exists("battery.log")) {
battery <- system('grep -Po "(?<=level: )[0-9]+" battery.log', intern = TRUE)
data <- tibble(battery) %>% mutate(battery = as.numeric(battery)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=battery)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
}
```

### Controllers

```{r battery_controllers}
if (file.exists("OVRRemoteService.log")) {
battery <- system("grep -Po '(?<=Type:)\\s+(Left|Right),.+Battery:\\s+[0-9]+(?=%)' OVRRemoteService.log | tr -s ' ' | sed -e \'s/^[[:space:]]*//\' -e \'s/\\n[[:space:]]*//\' | cut -d' ' -f 1,7", intern=TRUE)
data <- tibble(battery) %>% separate(battery, c("hand", "level"), convert = TRUE) %>% group_by(hand) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x=ts, y=level, color=hand)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
}
```

## CPU Usage

```{r cpu_usage}
cpu_util <- system('grep -Po "(?<=CPU%=)[0-9]+.[0-9]+" logcat_VrApi.log', intern = TRUE)
data <- tibble(cpu_util) %>% mutate(cpu_util = 100 * as.numeric(cpu_util)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=cpu_util)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```

## GPU Usage

```{r gpu_usage}
gpu_util <- system('grep -Po "(?<=GPU%=)[0-9]+.[0-9]+" logcat_VrApi.log', intern = TRUE)
data <- tibble(gpu_util) %>% mutate(gpu_util = 100 * as.numeric(gpu_util)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=gpu_util)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```

## Memory Usage

```{r memory_usage}
mem_usage <- system('grep -Po "(?<=Free=)[0-9]+" logcat_VrApi.log', intern = TRUE)
data <- tibble(mem_usage) %>% mutate(mem_usage = 12288 - as.numeric(mem_usage)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=mem_usage)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```

## Temperature

```{r temperature}
temp <- system('grep -Po "(?<=Temp=)[0-9]+" logcat_VrApi.log', intern = TRUE)
data <- tibble(temp) %>% mutate(temp = as.numeric(temp)) %>% mutate(ts = 0:(n()-1)) %>% select(ts, everything())
data %>%
ggplot(aes(x = ts, y=temp)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```

## Network Usage

```{r parse_network_data}
network <- system('grep -P "\\s+wlan0\\W" net_dev.log | tr -s " " | sed -e \'s/^[[:space:]]*//\' -e \'s/\\n[[:space:]]*//\'', intern = TRUE)
data <- tibble(network) %>% separate(network, c("interface", "bytes_rx", "packets_rx", "errs_rx", "drop_rx", "fifo_rx", "frame_rx", "compressed_rx", "multicast_rx", "bytes_tx", "packets_tx", "errs_tx", "drop_tx", "fifo_tx", "colls_tx", "carrier_tx", "compressed_tx"), sep = " ", convert = TRUE) %>% mutate(ts = 0:(n()-1))
```

### Bytes Recv

<!-- Inter-| Receive | Transmit -->
<!-- face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed -->
```{r bytes_recv}
data %>%
mutate(bytes_rx = (bytes_rx - lag(bytes_rx)) / 1000) %>%
ggplot(aes(x = ts, y=bytes_rx)) +
geom_line() +
ylab("KB/s") +
ylim(0, NA) +
theme_half_open() + background_grid()
```

### Bytes Sent

```{r bytes_sent}
data %>%
mutate(bytes_tx = (bytes_tx - lag(bytes_tx)) / 1000) %>%
ggplot(aes(x = ts, y=bytes_tx)) +
geom_line() +
ylab("KB/s") +
ylim(0, NA) +
theme_half_open() + background_grid()
```

### Packets Recv

```{r packets_recv}
data %>%
mutate(packets_rx = packets_rx - lag(packets_rx)) %>%
ggplot(aes(x = ts, y=packets_rx)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```

### Packets Sent

```{r packets_sent}
data %>%
mutate(packets_tx = packets_tx - lag(packets_tx)) %>%
ggplot(aes(x = ts, y=packets_tx)) +
geom_line() +
ylim(0, NA) +
theme_half_open() + background_grid()
```
Loading