<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp" -->

---
title: waitv() syscall and gaming on Linux | daily.dev
description: A deep dive into the futex_waitv() syscall introduced in Linux 5.16 and its role in improving gaming on Linux. The post explains how the original futex syscall...
canonical: https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: waitv() syscall and gaming on Linux | daily.dev
og:description: A deep dive into the futex_waitv() syscall introduced in Linux 5.16 and its role in improving gaming on Linux. The post explains how the original futex syscall...
og:url: https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp
og:image: https://api.daily.dev/og/posts/X6BzMsGpP.png
og:image:alt: waitv() syscall and gaming on Linux
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# waitv() syscall and gaming on Linux

**[Collabora Blog](https://daily.dev/sources/collabora)** · 11 min read · 0 upvotes · 0 comments

## Summary

A deep dive into the futex_waitv() syscall introduced in Linux 5.16 and its role in improving gaming on Linux. The post explains how the original futex syscall works internally (hash tables, bucket locking, wake semantics), why its single-futex limitation was a bottleneck, and how eventfd-based workarounds (Esync) and futex-based ones (Fsync) emerged as out-of-tree Wine patches. futex_waitv() allows waiting on multiple futexes simultaneously, reducing spin lock calls by over 80% in some applications and improving FPS in games like DOOM Eternal, Far Cry New Dawn, and The Witcher 3 when run via Proton/Wine on Linux.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2023/02/17/the-futex-waitv-syscall-gaming-on-linux>

## Questions this post answers

### What problem does futex_waitv() solve that the original futex syscall could not handle?

The original futex syscall only allows a thread to wait on a single futex at a time. When games need to wait on multiple synchronization objects simultaneously, workarounds like eventfd (Esync) or single futexes (Fsync) were used, but both had bottlenecks and limitations. futex_waitv() lets a process wait on a list of futexes and wake when any one of them is signaled, reducing spin lock calls by over 80% in some applications.

_Developers working on Linux synchronization or gaming infrastructure track kernel additions like this on daily.dev._

### What is the difference between Esync and Fsync in Wine/Proton for Linux gaming?

Esync maps Windows kernel synchronization objects to Linux eventfd file descriptors, reducing wineserver RPC overhead to roughly one syscall per operation. Fsync replaces eventfds with futexes, which can be faster but sometimes show negative or inconsistent performance differences. Both share the same architectural problems, including shared-memory state that can be corrupted by misbehaving processes, which kept both out of the mainline kernel tree.

_Choosing between Esync and Fsync for a specific game title is easier when you follow Linux gaming coverage on daily.dev._

### Which games perform better with Fsync vs Esync on Linux?

DOOM Eternal, Far Cry New Dawn, Overwatch, Red Dead Redemption 2, The Witcher 3, and World War Z perform better with Fsync. Ori and the Blind Forest: Definitive Edition, BioShock, and BioShock 2 perform better with Esync. Assassin's Creed Odyssey shows equal performance with both compared to running without either patch.

_Gamers and developers tuning Proton performance for specific titles find benchmark discussions like this on daily.dev._

## Similar posts on daily.dev

- [Wine 11 rewrites how Linux runs Windows games at the kernel level, and the speed gains are massive](https://daily.dev/posts/wine-11-rewrites-how-linux-runs-windows-games-at-the-kernel-level-and-the-speed-gains-are-massive-ojjbzn8ru) · Hacker News · 2 upvotes · 4 comments
- [Linux gaming is getting faster because Windows APIs are becoming Linux kernel features](https://daily.dev/posts/linux-gaming-is-getting-faster-because-windows-apis-are-becoming-linux-kernel-features-hwutw21m3) · XDA Developers · 1 upvotes · 0 comments
- [Wine 11.5 Release Is Big: Syscall User Dispatch Feature Supported On Linux](https://daily.dev/posts/wine-11-5-release-is-big-syscall-user-dispatch-feature-supported-on-linux-1l0pkgr6j) · Phoronix · 0 upvotes · 0 comments
- [How a System Call Actually Works in Linux](https://daily.dev/posts/how-a-system-call-actually-works-in-linux-kj1mr4pdv) · freeCodeCamp · 1 upvotes · 0 comments
- [Wine has been translating Windows games to Linux since 1993, but Proton is what made it effortless](https://daily.dev/posts/wine-has-been-translating-windows-games-to-linux-since-1993-but-proton-is-what-made-it-effortless-aojdg8ve1) · XDA Developers · 0 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#gaming](https://daily.dev/tags/gaming)

[View this post on daily.dev](https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"waitv() syscall and gaming on Linux","url":"https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp"},"datePublished":"2026-08-11T08:55:43.930Z","dateModified":"2026-08-11T09:35:19.398Z","description":"A deep dive into the futex_waitv() syscall introduced in Linux 5.16 and its role in improving gaming on Linux. The post explains how the original futex syscall...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4e5342b5a9166e1c27f3465f415b557f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4e5342b5a9166e1c27f3465f415b557f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux,gaming","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"waitv() syscall and gaming on Linux"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/waitv-syscall-and-gaming-on-linux-x6bzmsgpp#faq","mainEntity":[{"@type":"Question","name":"What problem does futex_waitv() solve that the original futex syscall could not handle?","acceptedAnswer":{"@type":"Answer","text":"The original futex syscall only allows a thread to wait on a single futex at a time. When games need to wait on multiple synchronization objects simultaneously, workarounds like eventfd (Esync) or single futexes (Fsync) were used, but both had bottlenecks and limitations. futex_waitv() lets a process wait on a list of futexes and wake when any one of them is signaled, reducing spin lock calls by over 80% in some applications. Developers working on Linux synchronization or gaming infrastructure track kernel additions like this on daily.dev."}},{"@type":"Question","name":"What is the difference between Esync and Fsync in Wine/Proton for Linux gaming?","acceptedAnswer":{"@type":"Answer","text":"Esync maps Windows kernel synchronization objects to Linux eventfd file descriptors, reducing wineserver RPC overhead to roughly one syscall per operation. Fsync replaces eventfds with futexes, which can be faster but sometimes show negative or inconsistent performance differences. Both share the same architectural problems, including shared-memory state that can be corrupted by misbehaving processes, which kept both out of the mainline kernel tree. Choosing between Esync and Fsync for a specific game title is easier when you follow Linux gaming coverage on daily.dev."}},{"@type":"Question","name":"Which games perform better with Fsync vs Esync on Linux?","acceptedAnswer":{"@type":"Answer","text":"DOOM Eternal, Far Cry New Dawn, Overwatch, Red Dead Redemption 2, The Witcher 3, and World War Z perform better with Fsync. Ori and the Blind Forest: Definitive Edition, BioShock, and BioShock 2 perform better with Esync. Assassin's Creed Odyssey shows equal performance with both compared to running without either patch. Gamers and developers tuning Proton performance for specific titles find benchmark discussions like this on daily.dev."}}]}
```

