当前位置: 首页 > news >正文

Linux 系统新玩法:用 NVIDIA GPU 显存作交换空间,提升可寻址内存

突发:GitHub平台功能与项目介绍

GitHub平台提供了丰富的功能和多样的解决方案,涵盖AI代码创作、开发者工作流、应用程序安全等多个方面。

平台功能

在AI代码创作方面,有GitHub Copilot可借助AI编写更优质代码,GitHub Copilot应用能从问题到合并实现直接代理,MCP注册表新增集成外部工具。开发者工作流包括Actions可自动化任何工作流,Codespaces提供即时开发环境,Issues用于规划和跟踪工作,代码审查可管理代码更改。应用程序安全方面,GitHub高级安全可发现并修复漏洞,代码安全能在构建过程中保障代码安全,密钥保护可防患于未然,阻止信息泄露。探索板块可了解为何选择GitHub,查看文档、博客、更新日志和市场等。

解决方案

按公司规模划分,有企业版、中小型团队版、初创企业版和非营利组织版。按用例划分,包括应用现代化、DevSecOps、DevOps、CI/CD等,还可查看所有用例。按行业划分,涉及医疗保健、金融服务、制造业、政府机构等,也能查看所有行业。

资源

按主题探索有AI、软件开发、DevOps、安全等主题,还可查看所有主题。按类型探索包括客户案例、活动与网络研讨会、电子书与报告、商业洞察、GitHub技能等。支持与服务方面,有文档、客户支持、社区论坛、信任中心和合作伙伴等。

开源项目

社区方面有GitHub Sponsors可资助开源开发者。项目包括安全实验室、维护者社区、加速器、GitHub Stars和存档项目。仓库有主题、热门趋势和集合等。

企业版

企业解决方案有由AI驱动的开发者平台。可用附加组件包括GitHub高级安全的企业级安全功能、Copilot for Business的企业级AI功能和高级支持的企业级24/7支持。

nbd - vram项目介绍

nbd - vram项目可在Linux系统中,将NVIDIA GPU的显存(VRAM)用作交换空间,专为内存焊接且无法升级的笔记本电脑设计。

测试环境与效果

该项目已在RTX 3070笔记本电脑(GA104M,16GB物理内存,8GB显存),驱动版本580.159.03,内核版本6.17,Pop!_OS系统中测试,分配7GB用于交换空间,最终包括zram和SSD交换空间在内约46GB,可寻址内存增加了两倍。溢出顺序为先填满RAM,然后显存吸收溢出数据(速度快,通过PCIe),接着zram压缩剩余数据(使用CPU),只有在其他空间都耗尽时才使用SSD。

工作原理

一个小型守护进程通过CUDA驱动API分配显存,然后使用NBD(网络块设备)协议通过Unix套接字将其作为块设备提供服务。内核内置的 `nbd` 驱动连接到该设备,并将其暴露为 `/dev/nbdX`,之后它就是一个普通的交换设备。数据路径为:内核交换子系统 - /dev/nbdX - nbd内核驱动 - Unix套接字 - nbd - vram守护进程 - cuMemcpyHtoD/DtoH - GPU显存。此方法无需编写或维护内核模块,也无需使用NVIDIA内核符号,即使内核和驱动更新,也无需重新构建任何内容。

为何不使用NVIDIA P2P API

“显而易见”的方法是使用 `nvidia_p2p_get_pages_persistent`,它可以将显存页面固定在BAR1中,以便CPU可以通过 `ioremap_wc` 直接访问。但所有尝试此方法的现有项目都遇到了同样的问题:NVIDIA驱动在消费级GeForce GPU上返回 `EINVAL`。无论是持久还是非持久变体,以及两种标志值,情况都是如此。此功能仅在Quadro/数据中心SKU的RM级别可用,与驱动版本无关。另一种方法是不通过P2P API直接使用 `ioremap_wc` 映射BAR1物理地址,但这也不起作用。GPU的内部页表仅映射了约16 MiB的BAR1(仅显示帧缓冲区)。从其他部分读取数据返回零。`mkswap` 似乎成功了,但 `swapon` 失败,因为交换头实际上并不存在。NBD方法避免了所有这些问题。`cuMemcpyHtoD` 和 `cuMemcpyDtoH` 可以在任何支持CUDA的GPU上使用,无需任何特殊权限。

要求

该项目要求支持CUDA的NVIDIA GPU(任何消费级RTX/GTX显卡),包含 `libcuda.so.1` 的NVIDIA驱动(无需CUDA工具包),Linux内核3.0及以上版本(nbd模块,大多数发行版已内置),`nbd - client` 包,`gcc`、`make`。

安装

安装步骤为:git clone https://github.com/c0dejedi/nbd - vram;cd nbd - vram;sudo ./install.sh;sudo systemctl start vram - swap - nbd。验证命令为:swapon --show。安装时会启用该服务,因此每次启动时都会自动启动。

配置

编辑 `/etc/systemd/system/vram - swap - nbd.service`,可设置使用的显存大小和交换优先级。守护进程会先尝试请求的大小,如果GPU内存不足,则会以512 MiB为步长逐步减少。更改配置后,需运行 `sudo systemctl daemon - reload && sudo systemctl restart vram - swap - nbd`。

电源管理

安装程序在首次安装时会询问是否启用电源感知管理。如果启用,当拔掉电源(或电池电量低于阈值)时,服务会自动停止,电源恢复时会重新启动。手动执行 `systemctl stop` 始终有效,不会被覆盖。安装后若要更改设置,可编辑 `/etc/nbd - vram.conf`。更改将在下一次轮询(60秒内)生效,或者在下次插拔电源事件时立即生效。

冒烟测试

无需安装的冒烟测试命令为:sudo bash test - nbd.sh。此命令会分配显存,连接NBD设备,进行1 MiB的写入和回读检查,激活交换空间,然后打印拆除说明。如果测试实例正在运行,`install.sh` 会自动处理拆除操作。冒烟测试通过后,若要对整个分区进行压力测试,命令为:sudo bash test - fill.sh。此命令会用零填充整个显存分区,验证样本回读,然后在退出时自动恢复交换空间。

性能

通过 `test - fill.sh` 在RTX 3070笔记本电脑上进行测量(7 GiB顺序写入,4M块),顺序吞吐量约为1.3 GB/s,延迟低于NVMe,因为数据路径是通过PCIe连接到GPU,而非存储设备。对于已经使用zram的笔记本电脑,可将显存交换空间的优先级设置得更高,以便在数据溢出时先使用显存,再使用SSD。

卸载

卸载命令为:sudo bash uninstall.sh。

许可证与关于

该项目许可证为MIT - Sean Lobjoit (c0dejedi)。其功能是在Linux系统中,将NVIDIA GPU的显存用作交换空间,专为内存焊接且无法升级的笔记本电脑设计。

http://www.zskr.cn/news/1452635.html

相关文章:

  • Horseshoe先验在稀疏信号预测中的理论最优性与自适应应用
  • 2026年最新黄石市黄金回收铂金回收白银回收彩金回收解析:口碑排行前五门店筛选及避坑要点和联系方式推荐 - 亦辰小黄鸭
  • UE5 UMG性能优化实战:如何高效绘制实时更新的多曲线图表?
  • BetterJoy深度解析:让Switch手柄在Windows上获得完美XInput支持的技术方案
  • 智慧树自动刷课插件:5分钟实现视频学习自动化完整指南
  • 国内头部猎头公司实测对比:哪家更适配中高端求职 - 得赢
  • 2026年最新惠州市黄金回收铂金回收白银回收彩金回收解析:口碑排行前五门店筛选及避坑要点和联系方式推荐 - 亦辰小黄鸭
  • Java 应用 CPU 过高排查全流程
  • AI 简历到底能不能过企业 ATS 系统?实测对比
  • 2026石家庄名包回收店铺多店横评,教你轻松选出高性价比渠道 - 奢侈品回收测评
  • 【真实经验分享】Oracle Data Guard 化身分裂之谜:一个 VALID_FOR 参数引发的级联灾难
  • 404 Media 起诉 ICE,索要 200 万美元间谍软件合同文件,获大量涂黑内容
  • WeChatPad:突破微信设备限制的技术方案
  • 不止是格式:Pattern Recognition投稿中那些没人告诉你的‘潜规则’与编辑视角
  • C# .NET项目一键接入微信、支付宝、银联支付的开箱即用封装包
  • Java 频繁GC 完整排查流程
  • SNAP 9.0处理Sentinel-1 SLC数据:一个简化流程的实战分享(避坑PolSARpro导入失败)
  • 免费微信聊天记录永久保存终极指南:WeChatMsg让数据真正属于你
  • AWR2944开发板实测DDM雷达原始数据+MATLAB一键处理脚本
  • Adobe Firefly 3.0+Figma AI Beta双引擎深度评测:实测17个真实项目,响应延迟下降68%但存在3个致命兼容盲区
  • 从‘算得对’到‘证得清’:一个非数学专业生的《数学分析》自学踩坑与上岸心得
  • 企业网络割接避坑指南:为什么你的深信服AD配置完上不了网?
  • B站视频转文字的终极方案:Bili2text完整指南让知识提取效率翻倍
  • AdaMamba:自适应Mamba模型在时间序列预测中的创新应用
  • 别再只会拖路由器了!EVE-NG里用VPCS模拟真实PC的5个实战场景(附完整命令清单)
  • 从GPON到400G:家庭宽带里的‘B+’和数据中心里的‘PAM4’到底在讲什么?
  • Selenium自动化测试遇到shadow-root别慌,手把手教你两种JavaScript定位方法(附Python代码)
  • freeswitch配置会议室
  • 别再死记硬背了!用这个‘路径调优’实验彻底搞懂BGP的Local_Pref和MED属性
  • 快速原型设计:基于快马ai生成vmware虚拟机集群搭建脚本