hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
19.93k stars 849 forks source link

High VRAM usage at launch ( 400+ ), and slow increase over runtime #7968

Open ChrisRuff opened 7 hours ago

ChrisRuff commented 7 hours ago

Already reported ? *

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 0f594732b063a90d44df8c5d402d658f27471dfe (props: bump version to 0.43.0). Date: Sun Sep 8 16:48:21 2024 Tag: v0.43.0, commits: 5196 flags: (if any) System Information: System name: Linux Node name: ArchBox Release: 6.9.10-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Thu, 18 Jul 2024 18:06:13 +0000 GPU information: 07:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070] [10de:2484] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX x86_64 Kernel Module 560.35.03 Fri Aug 16 21:39:15 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: hy3 by outfoxxed ver 0.1 ======Config-Start====== Config File: /home/chris/.config/hypr/hyprland.conf: Read Succeeded # ####################################################################################### # AUTOGENERATED HYPR CONFIG. # PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. # ####################################################################################### autogenerated = 0 # remove this line to remove the warning plugin = /home/chris/Git_Repos/hy3/build/libhy3.so general { gaps_in = 2 gaps_out = 2 border_size = 1 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = false # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = true layout = hy3 } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 5 # Change transparency of focused and unfocused windows active_opacity = 1.0 inactive_opacity = 1.0 drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 3 passes = 1 vibrancy = 0.1696 } } # https://wiki.hyprland.org/Configuring/Variables/#animations animations { enabled = true # 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 } # https://wiki.hyprland.org/Configuring/Variables/#misc misc { force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( } # https://wiki.hyprland.org/Configuring/Variables/#gestures gestures { workspace_swipe = false } ############# ### INPUT ### ############# # https://wiki.hyprland.org/Configuring/Variables/#input input { kb_layout = us kb_variant = colemak_dh kb_model = kb_options = caps:swapescape kb_rules = repeat_delay = 190 repeat_rate = 35 follow_mouse = 1 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. scroll_factor = 0.5 touchpad { natural_scroll = false } } render { explicit_sync = 1 } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more #device { # name = logitech-g502-1 # sensitivity = -0.5 #} # This is an example Hyprland config file. # Refer to the wiki for more information. # https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ # Please note not all available settings / options are set here. # For a full list, see the wiki # You can split this configuration into multiple files # Create your files separately and then link them to this file like this: # source = ~/.config/hypr/myColors.conf ################ ### MONITORS ### ################ $screen1 = DP-1 $screen2 = HDMI-A-1 $screen3 = HDMI-A-2 # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=$screen1, 1680x1050, 0x0, 1, transform, 3 monitor=$screen2, 1920x1080, 1050x250, 1 monitor=$screen3, 1920x1080, 2970x500, 1 ############################# ### ENVIRONMENT VARIABLES ### ############################# # See https://wiki.hyprland.org/Configuring/Environment-variables/ env = HYPRLAND_TRACE=1 env = AQ_TRACE=1 # Nvidia stuff env = NVD_BACKEND,direct env = GBM_BACKEND,nvidia-drm env = LIBVA_DRIVER_NAME,nvidia env = __GLX_VENDOR_LIBRARY_NAME,nvidia env = __GL_GSYNC_ALLOWED,0 env = __GL_VBR_ALLOWED,0 env = __GL_VRR_ALLOWED,0 # Lib overrides env = GDK_BACKEND,wayland,x11,* # GTK env = ELECTRON_OZONE_PLATFORM_HINT,auto # Electron env = CLUTTER_BACKEND,wayland # Clutter env = SDL_VIDEODRIVER,wayland # SDL2 env = SDL_VIDEO_DRIVER,wayland # SDL2 env = XDG_CURRENT_DESKTOP,Hyprland # GLFW env = XDG_SESSION_DESKTOP,Hyprland # GLFW env = XDG_SESSION_TYPE,wayland # GLFW env = MOZ_ENABLE_WAYLAND,1 # Firefox env = MOZ_USE_XINPUT2,1 # Firefox env = QT_QPA_PLATFORM,wayland;xcb # Qt env = QT_SCREEN_SCALE_FACTORS="1;1" # General purpose environment settings env = CMAKE_GENERATOR,Ninja env = CC,/usr/bin/gcc-13 env = CXX,/usr/bin/g++-13 ###################################### env = bitdepth,10 # Streaming for discord # Themes env = GTK_THEME,Yaru-dark env = XCURSOR_THEME,theme_phinger-cursors-dark env = XCURSOR_SIZE,20 env = HYPRCURSOR_THEME,theme_phinger-cursors-dark env = HYPRCURSOR_SIZE,20 cursor { no_hardware_cursors = true } #################### ### KEYBINDINGSS ### #################### # See https://wiki.hyprland.org/Configuring/Keywords/ $mainMod = SUPER # Sets "Windows" key as main modifier bind = $mainMod CTRL, 59, movecurrentworkspacetomonitor, l # < bind = $mainMod CTRL, 60, movecurrentworkspacetomonitor, r # > bind = ,XF86AudioPrev, exec, playerctl --player=Feishin previous && pkill -RTMIN+4 waybar bind = ,XF86AudioPlay, exec, playerctl --player=Feishin play-pause bind = ,XF86AudioPause, exec, playerctl --player=Feishin play-pause bind = ,XF86AudioNext, exec, playerctl --player=Feishin next && pkill -RTMIN+4 waybar bind = MOD5, XF86AudioPrev, exec, playerctl --player=firefox previous bind = MOD5, XF86AudioPlay, exec, playerctl --player=firefox play-pause bind = MOD5, XF86AudioPause, exec, playerctl --player=firefox play-pause bind = MOD5, XF86AudioNext, exec, playerctl --player=firefox next binde = ,xF86AudioRaiseVolume, exec, playerctl --player=Feishin volume 0.01+ binde = ,xF86AudioLowerVolume, exec, playerctl --player=Feishin volume 0.01- bind = ,xF86AudioMute, exec, amixer -q set Master toggle bind = $mainMod, Print, exec, grim -g "$(slurp -d)" - | wl-copy #bind = $mainMod, Print, exec, XDG_SESSION_DESKTOP=sway XDG_CURRENT_DESKTOP=sway flameshot gui # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow bindr = $mainMod, mouse:275, hy3:movefocus, r bindr = $mainMod, mouse:276, hy3:movefocus, l # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, hy3:movefocus, u bind = $mainMod, down, hy3:movefocus, d bind = $mainMod, n, hy3:movefocus, l bind = $mainMod, e, hy3:movefocus, d bind = $mainMod, i, hy3:movefocus, u bind = $mainMod, o, hy3:movefocus, r bind = $mainMod SHIFT, n, hy3:movewindow, l bind = $mainMod SHIFT, e, hy3:movewindow, d bind = $mainMod SHIFT, i, hy3:movewindow, u bind = $mainMod SHIFT, o, hy3:movewindow, r # Bound programs $terminal_client = kitty $terminal = $terminal_client -d $(cat /tmp/whereami) $fileManager = $terminal -e "ranger" $menu = wofi --show run bind = $mainMod SHIFT CTRL, SPACE, exec, hyprctl dispatch dpms off bind = $mainMod SHIFT, SPACE, exec, hyprctl dispatch dpms on bind = $mainMod, RETURN, exec, $terminal bind = $mainMod SHIFT, RETURN, exec, $terminal_client bind = $mainMod CTRL, RETURN, exec, /usr/bin/konsole bind = $mainMod, F2, submap, browsermode submap = browsermode bind = , 1, exec, source ~/.config/hypr/ff.sh; searcher bind = , 1, submap, reset bind = , 2, exec, source ~/.config/hypr/ff.sh; watcher bind = , 2, submap, reset bind = , 3, exec, source ~/.config/hypr/ff.sh; homelab bind = , 3, submap, reset bind = , 4, exec, source ~/.config/hypr/ff.sh; start bind = , 4, submap, reset bind = , escape, submap, reset submap = reset bind = $mainMod, F3, exec, $fileManager bind = $mainMod, d, exec, $menu bind = $mainMod, s, hy3:changegroup, toggletab bind = $mainMod, h, hy3:makegroup, h bind = $mainMod, v, hy3:makegroup, v bind = $mainMod SHIFT, q, killactive bind = $mainMod, SPACE, togglefloating, bind = $mainMod, f, fullscreen bind = $mainMod, r, submap, resizemode submap = resizemode binde = , n, resizeactive, 50 0 binde = , e, resizeactive, 0 50 binde = , i, resizeactive, 0 -50 binde = , o, resizeactive, -50 0 binde = , left, resizeactive, 50 0 binde = , up, resizeactive, 0 50 binde = , down, resizeactive, 0 -50 binde = , right, resizeactive, -50 0 bind = , escape, submap, reset submap = reset bind = $mainMod, 0, submap, shutdown submap = shutdown bind = SHIFT, s, exec, shutdown -h now bind = , s, exec, systemctl suspend bind = , r, exec, reboot bind = , k, exit bind = , s, submap, reset bind = , escape, submap, reset submap = reset ############################## ### WORKSPACES AND WINDOWS ### ############################## # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules #workspace=name:monitoring, monitor:$screen1, persistent:true #workspace=name:coding, monitor:$screen2, default:true, persistent:true #workspace=name:firefox, monitor:$screen3, default:true, persistent:true #workspace=name:ranger, monitor:$screen2, persistent:true #workspace=name:remoting, monitor:$screen2, persistent:true #workspace=name:searching, monitor:$screen1, persistent:true #workspace=name:homelab, monitor:$screen2, persistent:true #workspace=name:discord, monitor:$screen1, default:true, persistent:true #workspace=name:music, monitor:$screen3, persistent:true $ws_monitoring=1 $ws_code=2 $ws_browser=3 $ws_file=4 $ws_remoting=5 $ws_searcher=7 $ws_homelab=8 $ws_discord=9 $ws_music=10 $ws_git=11 $ws_steam=12 $ws_obsidian=13 $ws_email=14 $ws_ai=15 $ws_config=16 $ws_gamedev=17 # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, $ws_monitoring bind = $mainMod, 2, workspace, $ws_code bind = $mainMod, 3, workspace, $ws_browser bind = $mainMod, 4, workspace, $ws_file bind = $mainMod, 5, workspace, $ws_remoting bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, $ws_searcher bind = $mainMod, 8, workspace, $ws_homelab bind = $mainMod, 9, workspace, $ws_discord # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspace, $ws_monitoring bind = $mainMod SHIFT, 2, movetoworkspace, $ws_code bind = $mainMod SHIFT, 3, movetoworkspace, $ws_browser bind = $mainMod SHIFT, 4, movetoworkspace, $ws_file bind = $mainMod SHIFT, 5, movetoworkspace, $ws_remoting bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, $ws_searcher bind = $mainMod SHIFT, 8, movetoworkspace, $ws_homelab bind = $mainMod SHIFT, 9, movetoworkspace, $ws_discord bind = $mainMod CTRL, 1, movetoworkspacesilent, $ws_monitoring bind = $mainMod CTRL, 2, movetoworkspacesilent, $ws_code bind = $mainMod CTRL, 3, movetoworkspacesilent, $ws_browser bind = $mainMod CTRL, 4, movetoworkspacesilent, $ws_file bind = $mainMod CTRL, 5, movetoworkspacesilent, $ws_remoting bind = $mainMod CTRL, 6, movetoworkspacesilent, 6 bind = $mainMod CTRL, 7, movetoworkspacesilent, $ws_searcher bind = $mainMod CTRL, 8, movetoworkspacesilent, $ws_homelab bind = $mainMod CTRL, 9, movetoworkspacesilent, $ws_discord # Scratchpad #bind = $mainMod, 0, togglespecialworkspace, magic #bind = $mainMod SHIFT, 0, movetoworkspace, special:magic bind = $mainMod, comma, submap, layout submap = layout bind = , 1, workspace, $ws_music bind = , 1, submap, reset bind = , 2, workspace, $ws_git bind = , 2, submap, reset bind = , 3, workspace, $ws_steam bind = , 3, submap, reset bind = , 4, workspace, $ws_ai bind = , 4, submap, reset bind = , o, workspace, $ws_obsidian bind = , o, submap, reset bind = , e, workspace, $ws_email bind = , e, submap, reset bind = , c, workspace, $ws_config bind = , c, submap, reset bind = , g, workspace, $ws_gamedev bind = , g, submap, reset bind = SHIFT, 1, movetoworkspace, $ws_music bind = SHIFT, 1, submap, reset bind = SHIFT, 2, movetoworkspace, $ws_git bind = SHIFT, 2, submap, reset bind = SHIFT, 3, movetoworkspace, $ws_steam bind = SHIFT, 3, submap, reset bind = SHIFT, 4, movetoworkspace, $ws_ai bind = SHIFT, 4, submap, reset bind = SHIFT, o, movetoworkspace, $ws_obsidian bind = SHIFT, o, submap, reset bind = SHIFT, e, movetoworkspace, $ws_email bind = SHIFT, e, submap, reset bind = SHIFT, c, movetoworkspace, $ws_config bind = SHIFT, c, submap, reset bind = SHIFT, g, movetoworkspace, $ws_gamedev bind = SHIFT, g, submap, reset bind = CTRL, 1, movetoworkspacesilent, $ws_music bind = CTRL, 1, submap, reset bind = CTRL, 2, movetoworkspacesilent, $ws_git bind = CTRL, 2, submap, reset bind = CTRL, 3, movetoworkspacesilent, $ws_steam bind = CTRL, 3, submap, reset bind = CTRL, 4, movetoworkspacesilent, $ws_ai bind = CTRL, 4, submap, reset bind = CTRL, o, movetoworkspacesilent, $ws_obsidian bind = CTRL, o, submap, reset bind = CTRL, e, movetoworkspacesilent, $ws_email bind = CTRL, e, submap, reset bind = CTRL, c, movetoworkspacesilent, $ws_config bind = CTRL, c, submap, reset bind = CTRL, g, movetoworkspacesilent, $ws_gamedev bind = CTRL, g, submap, reset bind = ,escape,submap,reset submap = reset workspace=$ws_monitoring, monitor:$screen1, persistent:true workspace=$ws_code, monitor:$screen2, persistent:true workspace=$ws_browser, monitor:$screen3, default:true, persistent:true workspace=$ws_file, monitor:$screen2, persistent:true workspace=$ws_remoting, monitor:$screen2, persistent:true workspace=5, monitor:$screen2 workspace=6, monitor:$screen2, persistent:true workspace=$ws_searcher, monitor:$screen1, persistent:true workspace=$ws_homelab, monitor:$screen2, persistent:true workspace=$ws_discord, monitor:$screen1, persistent:true workspace=$ws_music, monitor:$screen3, persistent:true workspace=$ws_git, monitor:$screen2, persistent:true workspace=$ws_steam, monitor:$screen2, persistent:true workspace=$ws_obsidian, monitor:$screen2, persistent:true workspace=$ws_email, monitor:$screen3, persistent:true workspace=$ws_config, monitor:$screen2 # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. # Open on specific workspace #windowrule = workspace $ws_browser, firefox #Flameshot windowrulev2=suppressevent fullscreen,title:^(flameshot) windowrulev2=float,class:^(flameshot) windowrulev2=move 0 0,class:^(flameshot) #xwaylandvideobridge windowrulev2 = opacity 0.0 override, class:^(xwaylandvideobridge)$ windowrulev2 = noanim, class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus, class:^(xwaylandvideobridge)$ windowrulev2 = maxsize 1 1, class:^(xwaylandvideobridge)$ windowrulev2 = noblur, class:^(xwaylandvideobridge)$ windowrule = workspace $ws_file, Pcmanfm windowrule = workspace $ws_steam, Steam windowrule = workspace $ws_discord, Discord windowrule = workspace $ws_discord, vesktop windowrulev2 = workspace 6, title:(Crack Viewer) windowrulev2 = workspace 6, title:(Launcher) # floating windows windowrulev2 = float, class:(hyprland-share-picker) windowrulev2 = float, class:(Viewer) windowrulev2 = tile, title:(Crack Viewer) windowrulev2 = workspace $ws_browser,class:^(ffwatcher)$ windowrulev2 = workspace $ws_searcher,class:^(ffsearcher)$ windowrulev2 = workspace $ws_homelab,class:^(ffhomelab)$ windowrulev2 = workspace 5,class:^(Google-chrome) # Allowing screen tearing #windowrulev2 = immediate, class:^(steam_app) exec-once = [workspace $ws_code silent] kitty --session "~/.config/hypr/kitty/code1.sesh" exec-once = [workspace $ws_code silent] kitty --session "~/.config/hypr/kitty/code2.sesh" exec-once = [workspace $ws_monitoring silent] kitty -e "btop" exec-once = [workspace $ws_monitoring silent] kitty -e "nvtop" exec-once = [workspace $ws_file silent] kitty -e "ranger" exec-once = [workspace $ws_music silent] /usr/bin/feishin exec-once = source ~/.config/hypr/ff.sh; start exec-once = [workspace 5 silent] /usr/bin/google-chrome-stable #exec-once = [workspace $ws_discord silent] /usr/bin/discord --ozone-platform=wayland --enable-features=UseOzonePlatform exec-once = [workspace $ws_discord silent] /usr/bin/vesktop --ozone-platform=wayland --enable-features=UseOzonePlatform exec-once = [workspace $ws_steam silent] SDL_VIDEO_DRIVER=x11 SDL_VIDEODRIVER=x11 /usr/bin/steam exec-once = [workspace $ws_obsidian silent] /usr/bin/obsidian --disable-gpu exec-once = [workspace $ws_email silent] /usr/bin/thunderbird exec-once = [workspace $ws_git silent] QT_QPA_PLATFORM=xcb /usr/bin/git-cola exec-once = [workspace $ws_ai silent] kitty --session "~/.config/hypr/kitty/ai1.sesh" exec-once = [workspace $ws_ai silent] kitty --session "~/.config/hypr/kitty/ai2.sesh" exec-once = [workspace $ws_config silent] kitty --session "~/.config/hypr/kitty/config.sesh" # Daemons exec-once = /usr/bin/wlsunset -l 42.317714 -L -71.096239 -t 4000 -T 6500 exec-once = /usr/bin/playerctld exec-once = /usr/bin/dunst exec-once = /usr/bin/sunshine exec-once = /usr/bin/waybar exec-once = /usr/bin/hyprpaper exec-once = ~/.config/hypr/suspend.sh exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = /usr/bin/setleds +num < /dev/console # Turn on numlock #exec-once = ~/.config/hypr/xdg.sh bind = $mainMod SHIFT, g, exec, ~/.config/hypr/gamemode.sh bind = $mainMod, EQUAL, exec, ~/.config/hypr/keyboard_switch.sh exec-once = echo "/home/chris" > /tmp/whereami ======Config-End======== ```

Description

To summerize the below image, in order of memory used are:

and so on and so forth. image

Ultimately, hyprland seems to have a leak in vram of some sort. I do have three monitors, which i assume is to blame for the high vram on launch, but i cant figure out why the memory doesnt stay around that 400mb. Also its important to note that this isnt related to screensharing, this occurs regardless of whether ive screenshared or not.

The uptime on this system is 5d, but i do launch and close applications with heavy gpu usage during work, which i assume is the issue. Any help to resolve this would be great.

Let me know if im missing any important data and ill retrieve it

How to reproduce

On my system, you just have to open hyprland, and then let it run for a few days, opening applications that use lots of gpu.

Crash reports, logs, images, videos

No crashes for me.

vaxerski commented 3 hours ago

isnt this a nvidia leak

ChrisRuff commented 3 hours ago

I mean very well could be, is there any solution? Besides nvidia not sucking?