Skip to content

Commit a3e0e78

Browse files
committed
devices: Hoist epoll event buffer allocation out of event loops
Move the epoll_events Vec allocation before the loop in all virtio worker threads (block, fs, net, snd, vsock muxer). The buffer is reused across iterations since wait() overwrites entries and all callers only iterate epoll_events[0..ev_cnt]. Signed-off-by: Matej Hrica <mhrica@redhat.com>
1 parent 853ba11 commit a3e0e78

5 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/devices/src/virtio/block/worker.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ impl BlockWorker {
105105
&EpollEvent::new(EventSet::IN, stop_ev_fd as u64),
106106
);
107107

108+
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
108109
loop {
109-
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
110110
match epoll.wait(epoll_events.len(), -1, epoll_events.as_mut_slice()) {
111111
Ok(ev_cnt) => {
112112
for event in &epoll_events[0..ev_cnt] {

src/devices/src/virtio/fs/worker.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ impl FsWorker {
8989
&EpollEvent::new(EventSet::IN, stop_ev_fd as u64),
9090
);
9191

92+
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
9293
loop {
93-
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
9494
match epoll.wait(epoll_events.len(), -1, epoll_events.as_mut_slice()) {
9595
Ok(ev_cnt) => {
9696
for event in &epoll_events[0..ev_cnt] {

src/devices/src/virtio/net/worker.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ impl NetWorker {
125125
),
126126
);
127127

128+
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
128129
loop {
129-
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
130130
match epoll.wait(epoll_events.len(), -1, epoll_events.as_mut_slice()) {
131131
Ok(ev_cnt) => {
132132
for event in &epoll_events[0..ev_cnt] {

src/devices/src/virtio/snd/worker.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ impl SndWorker {
139139
)
140140
.unwrap();
141141

142+
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
142143
loop {
143-
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
144144
match epoll.wait(epoll_events.len(), -1, epoll_events.as_mut_slice()) {
145145
Ok(ev_cnt) => {
146146
for event in &epoll_events[0..ev_cnt] {

src/devices/src/virtio/vsock/muxer_thread.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ impl MuxerThread {
175175
fn work(mut self) {
176176
let mut thread_rng = rng();
177177
self.create_lisening_ipc_sockets();
178+
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
178179
loop {
179-
let mut epoll_events = vec![EpollEvent::new(EventSet::empty(), 0); 32];
180180
match self
181181
.epoll
182182
.wait(epoll_events.len(), -1, epoll_events.as_mut_slice())

0 commit comments

Comments
 (0)