Skip to content
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

Resizing window will casuse high vmem usage without mem release #7362

Closed
Avimitin opened this issue Aug 16, 2024 · 9 comments
Closed

Resizing window will casuse high vmem usage without mem release #7362

Avimitin opened this issue Aug 16, 2024 · 9 comments
Labels
bug Something isn't working

Comments

@Avimitin
Copy link

Avimitin commented Aug 16, 2024

Regression?

No

System Info and Version

System/Version info
Hyprland, built from branch main at commit 12d9901472c6f9128fa8b16c25b3a879d1859e60  (protocols: refactor protocol logging to a macro (7324)).
Date: Fri Aug 16 00:16:18 2024
Tag: v0.42.0-26-g12d99014, commits: 5095

flags: (if any)


System Information:
System name: Linux
Node name: homelab
Release: 6.10.5-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Thu, 15 Aug 2024 00:25:30 +0000


GPU information: 
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080 Lite Hash Rate] [10de:2216] (rev a1) (prog-if 00 [VGA controller])
NVRM version: NVIDIA UNIX x86_64 Kernel Module  560.31.02  Tue Jul 30 21:02:43 UTC 2024


os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo


plugins:

======Config-Start======


Config File: /home/sh1marin/.config/hypr/hyprland.conf: Read Succeeded
# paru -S hyprland waybar wpaperd dunst libnotify xdg-portal-{gtk,hyprland} wl-clipboard grim slurp swayidle swaylock

autogenerated = 0

# IM
# As for now, the modern Gtk 3/4 application should be able to use text-input-v3 which is supported almost by every compositor.
# So GTK_IM_MODULE is not required.
#env = GTK_IM_MODULE,fcitx
env = QT_IM_MODULE,fcitx
env = XMODIFIERS,@im,fcitx
env = SDL_IM_MODULE,fcitx
# For kitty
env = GLFW_IM_MODULE,ibus

# Wayland specific
env = XCURSOR_SIZE,24
env = GDK_BACKEND,wayland,x11
env = QT_QPA_PLATFORM,"wayland;xcb"
env = CLUTTER_BACKEND,wayland
env = SDL_VIDEODRIVER,wayland
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_ENABLE_HIGHDPI_SCALING,1
env = MOZ_ENABLE_WAYLAND,1

# Themeing
# paru -S whitesur-gtk-theme whitesur-icon-theme
env = GTK_THEME,WhiteSur-Dark
exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'WhiteSur-Dark'
exec-once = gsettings set org.gnome.desktop.interface icon-theme 'WhiteSur-dark'
exec-once = gsettings set org.gnome.desktop.interface cursor-theme 'WhiteSur-cursors'
exec-once = hyprctl setcursor WhiteSur-cursors 24
# paru -S kvantum kvantum-theme-whitesur-git
env = QT_STYLE_OVERRIDE,kvantum

# Nvidia specific
# paru -S nvidia-beta nvidia-utils-beta lib32-nvidia-utils-beta (nvidia >= 555)
env = LIBVA_DRIVER_NAME,nvidia
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = NVD_BACKEND,direct
cursor {
    no_hardware_cursors = false
}

debug {
    disable_logs = false
}

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = us
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    follow_mouse = 1

    touchpad {
        natural_scroll = false
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 2
    gaps_out = 2
    border_size = 1
    col.active_border = 0xCC606060
    col.inactive_border = rgba(0, 0, 0, 0)

    layout = master
}

# unscale XWayland
xwayland {
  force_zero_scaling = true
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 5

    blur {
        enabled = true
        size = 4
        passes = 3
    }

    drop_shadow = true
    shadow_range = 30
    shadow_render_power = 3
    col.shadow = rgba(25, 25, 25, 0.5)
    col.shadow_inactive = rgba(25, 25, 25, 0.1)
}

animations {
    enabled = true

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = true # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_status = master
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = false
}


# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, R, exec, @rotateScript@
bind = $mainMod, Return, bringactivetotop   # On floating mode, bring window to top
bind = $mainMod, Return, layoutmsg, swapwithmaster     # On master mode, bring window to master
bind = $mainMod SHIFT, Return, exec, alacritty
#bind = $mainMod SHIFT, Return, layoutmsg, swapwithmaster
bind = $mainMod SHIFT, Q, killactive,
bind = $mainMod SHIFT, E, exit,
bind = $mainMod SHIFT, L, exec, /nix/store/a5v7xpcyq0b56smxhld3jc8v7rsaw4j4-run-hyprlock/bin/run-hyprlock
bind = $mainMod, f, togglefloating,
bind = $mainMod SHIFT, F, fullscreen, 0
bind = $mainMod SHIFT, space, exec, rofi -show drun
bind = , Print, exec, env DELETE_SCREENSHOT=1 /nix/store/nmgk0813hz9xzpp6nscx3kgr5n7dp12l-wayland-screenshoter/bin/wayland-screenshoter
bind = CTRL, Print, exec, /nix/store/nmgk0813hz9xzpp6nscx3kgr5n7dp12l-wayland-screenshoter/bin/wayland-screenshoter

# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d

bind = $mainMod SHIFT, left, resizeactive, -10 0
bind = $mainMod SHIFT, down, resizeactive, 0 10
bind = $mainMod SHIFT, up, resizeactive, 0 -10
bind = $mainMod SHIFT, left, resizeactive, 10 0

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, Tab, workspace, previous
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

source = /nix/store/80cjn3x1w7h56icgdaibabi9jvrpbybf-hypr-office.conf

exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME
exec-once = systemd-run --user --unit=fcitx5-hypr /usr/bin/fcitx5
exec-once = systemd-run --user --unit=waybar-hypr /usr/bin/waybar
exec-once = systemd-run --user --unit=polkit-hypr /usr/lib/polkit-kde-authentication-agent-1
exec-once = systemd-run --user --unit=kdeconnectd /usr/bin/kdeconnectd
exec-once = systemd-run --user --unit=wpaperd-hypr /usr/bin/wpaperd

# Windows rules
windowrulev2 = float,class:(org.telegram.desktop)
# Telegram have different class naming on xwayland
windowrulev2 = float,class:^(TelegramDesktop)$
windowrulev2 = noblur,class:^(TelegramDesktop)$
# They even have different class naming for File chooser! FUCK!!!
windowrulev2 = float,class:^(telegram-desktop)$
windowrulev2 = float,class:(steam)
windowrulev2 = float,class:(SDL Application)
windowrulev2 = float,initialTitle:(Steam)
windowrulev2 = float,class:(mpv)
windowrulev2 = float,class:(swayimg)
windowrulev2 = float,class:(firefox),title:(Picture-in-Picture)
windowrulev2 = size 20% 20%,class:(firefox),title:(Picture-in-Picture)
# Fix rofi losing focus issue
windowrulev2 = stayfocused,class:^(Rofi)

layerrule = blur,waybar
layerrule = blur,rofi


Config File: /nix/store/80cjn3x1w7h56icgdaibabi9jvrpbybf-hypr-office.conf: Read Succeeded
monitor=DP-1,preferred,auto,2
env = GDK_SCALE,2
env = QT_AUTO_SCREEN_SCALE_FACTOR,2

======Config-End========

Description

After toggling fullscreen 0 dispatcher for Telegram Desktop, the vmem usage is constantly increasing, and the memory won't release when the application was exited.

How to reproduce

Open telegram desktop (latest from Arch Linux repository, flatpak version not tested), open nvtop, toggle fullscreen 0 multiple time, and experimenters will see the GPU memory usage for Hyprland is increasing. Kill telegram desktop window, and the memory is keeping the same. Exit the telegram desktop process, the memory is still not released.

[Update]
This issue is also reproducible on Firefox. Toggle floating mode on the window, then keep toggling the fullscreen mode, the vmem usage will also keep increase without release.

Crash reports, logs, images, videos

hyprland-high-vmem.log

@Avimitin Avimitin added the bug Something isn't working label Aug 16, 2024
@Avimitin
Copy link
Author

shrink.mp4

Reproducible with windows resize

@Avimitin Avimitin changed the title Toggle fullscreen for Telegram Desktop won't release vmem Resizing window will casuse high vmem usage without mem release Aug 16, 2024
@romanstingler
Copy link
Contributor

an you try installing egl_wayland-git from AUR and test again?

@Avimitin
Copy link
Author

It is tested using the -git version.

$ yay -Qs egl
local/egl-wayland-git 1.1.15.r1.gf30cb0e-1
    EGLStream-based Wayland external platform (git version)

@vaxerski
Copy link
Member

AMD, can't repro. Nvidia issue?

@Avimitin
Copy link
Author

Avimitin commented Aug 17, 2024

Probably, let me try my intel gpu

@Avimitin
Copy link
Author

PROBABLY a bug introduced in nvidia beta (560). After downgrading to 555.58, this issue can't be reproduced now. Closed this issue for now?

@romanstingler
Copy link
Contributor

yes should be closed as it is not a Hyprland issue

@Avimitin
Copy link
Author

Avimitin commented Aug 22, 2024

For other fellows that went into the same issue after updating to NVIDIA 560, here are some reference for you to track:

@cubanismo
Copy link

Please see the latest update here for a suggested workaround:

NVIDIA/egl-wayland#126 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants