LogosLinuxInstaller icon indicating copy to clipboard operation
LogosLinuxInstaller copied to clipboard

Excessive memory usage due to proliferation of CEF processes

Open jg00dman opened this issue 3 months ago • 1 comments

Wine CEF Memory Optimization Patch Proposal

Problem:
Chromium Embedded Framework (CEF) apps like Logos Bible Software spawn multiple renderer processes (~1 per UI panel). On Windows/Mac, each uses 20-50MB RAM by sharing V8 JIT code, Skia graphics caches, and fonts across processes. In Wine on Linux, unshared per-process duplication inflates this to 250MB/process, exhausting RAM with 10+ panels (2.5GB+ total). Root causes: Wine's ntdll doesn't share executable pages; D3D11 re-translates shaders per-process; emulated sandbox adds overhead.

Solution possibly:
3 targeted patches to emulate native sharing:

  1. Shared V8 JIT Cache (ntdll/unixlib.c): Map V8's 128MB executable region to /dev/shm once per prefix.
  2. Unified Skia/ANGLE Cache (d3d11/utils.c): Global /tmp/wine-angle-cache for shader translations.
  3. CEF Sandbox Bypass (Launch flag + winevdm.c): Skip emulated sandboxing.

Implementation: 200 LOC total, 2-week sprint on Wine-Staging. Test: Logos 10-panel session.

Impact Before (Wine) After (Patched) Savings
Per Process 250MB 50MB -80%
10 Panels 2.5GB 500MB 2GB
Build Time N/A +30s Minimal

Benefits:

  • Logos Users: Runs 4x more panels without swapping/crashes.
  • All Wine CEF Apps: Fixes Discord, VSCode, Steam overlays (100k+ users).
  • Upstream: Wine 11.0 feature.
  • ROI: 80% RAM win, zero perf loss, affects all multi-process Win apps.

Next: File Wine GitLab issue → PR to Staging.

jg00dman avatar Oct 16 '25 20:10 jg00dman

https://bugs.winehq.org/show_bug.cgi?id=58805

jg00dman avatar Oct 16 '25 21:10 jg00dman