配置NVIDIA Jetson AGX Xavier
首先查看CPU的每个核是否在工作,如果其中没有工作的,修改对应的online文件,例如CPU0,修改/sys/devices/system/cpu/cpu0/online,把里面的0改成1,以此类推,然后重启,即可把没启用的CPU核用起来。
其次,调整一个Xavier的运行模式和风扇速度,Xavier加电时默认没有启动风扇,运行一段时间后会非常烫,长期这样可能容易坏,所以至少需要把风扇启动起来。Xavier的Ubuntu18.04桌面的右上方有菜单可以选择设置运行的功耗模式:
也可以使用下面的nvpmodel命令来设置:
sudo nvpmodel --query #查看当前的模式,默认为2, 功耗15W
sudo nvpmodel -m 0 #设置满功率运行,MAX
如果你没有使用JetPack SDK Manager重装Ubuntu18.04,默认的/home/nvidia/下面莺歌有个jetson_clocks.sh文件,可以执行西面的命令来启动风扇,不管你设置的什么风扇速度值(0-255),Xavier加电时并没有去读取它,而是需要设置(可以手工执行命令或者在~/.bashrc里增加设置命令):
sudo ~/jetson_clocks.sh #强制风扇启动
我重装了Xavier的Ubuntu18.04,创建了自己的用户robot,所以/hom/robot/下并没有jetson_clocks.json这个文件了(我查了一下原因,应该是NVIDIA的疏忽,通过JetPack SDK Manager下载的安装包中,linux的文件系统模板里没有提供这个文件,当然在重装后就没有这个文件了),但是/usr/bin/jetson_clocks这个二进制可执行文件是存在的,于是可使用它来设置风扇速度:
sudo jetson_clocks --show #查看设置
sudo jetson_clocks --store #把设置值保存到 /home/robot/l4t_dfs.conf
手工修改 /home/robot/l4t_dfs.conf这个文件里的风扇值(0-255, 0 停止,255 最大速度),例如:
/sys/devices/pwm-fan/target_pwm:200
然后执行
sudo jetson_clocks --restore
即可听到风扇呼呼地响起来了,风扇起来一会儿,Xavier的外壳就不发烫变冷了。
然后把上面这句加入到~/.bashrc里,以让Xavier每次加电启动时自动启动风扇散热。
因为Xavier内置的32G eMMC存储在安装Ubuntu18.04等软件后所剩空间不是很多,对于需要做实验安装很多软件部署很多模型来说,空间是不够的,现在高速SD卡很便宜了,所以可以买张64G或128G的高速SD卡 (例如某品牌的128GB TF(MicroSD)存储卡U3 C10 4K EVO升级版 传输速度100MB/s ,网上现在卖129元)作为数据盘,
插到背后的SD卡插槽里:
重启动系统,查看新加的卡的设备路径:
上面的/dev/mmcblk0p1是Xavier内置的eMMC存储,/dev/mmcblk1p1则是新加的SD卡。格式化成ext4文件系统,然后新创建/data目录,修改Linux配置文件/etc/fstab把这卡在Linux启动时挂载到/data路径下,然后重启Ubuntu即可以看到SD卡自动挂载到/data下:
mkdir /data
mkfs.ext4 /dev/mmcblk1p1
sudo vi /etc/fstab
#增加下面这行
/dev/mmcblk1p1 /data default 0 0
reboot
后面把新加的SD卡作为数据盘使用,所有的数据集和模型等大文件全部存/data下,第一步就是要把docker的数据存储路径从/var/lib/docker移到/data下去,不然,docker数据存储在eMMC上,docker镜像一般都很大,创建几个image就会把eMMC空间会爆掉。改变docker的数据存储位置有多种办法,例如修改/etc/docker/daemon.json文件增加路径设置,不过考虑到daemon.json可能被多次修改而误覆盖,我觉得采用下面的软连接方式虽然最粗暴但最快捷最可靠:
sudo mv /var/lib/docker /data/
cd /var/lib
sudo ln -s /data/docker docker
然后顺便在/etc/docker/daemon.json内增加国内的docker镜像源,以在pull某个镜像时能获得高速下载的效果,默认的国外的hub.docker.com有时下载太慢了:
sudo vi /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"bip":"172.17.0.1/16",
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://hub.docker.com"
]
}
然后重启docker service以将上面的改动生效:
sudo systemctl restart docker
用hello-world镜像测试docker service是否正常:
sudo docker run hello-world
要测试容器内是否可以正常使用GPU,使用NVIDIA的nvidia:l4t-base镜像,按照以下步骤进行测试:
首先创建nvcr.io/nvidia/l4t-base:r32.3.1镜像的容器
xhost + #如何xhost +报错"access control disabled, clients can connect from any host",则执行xhost + <ip> ,ip是本机地址,下面的--network host保证了容器内和主机使用同一地址。
sudo docker run --runtime nvidia --network host -it -e DISPLAY=$DISPLAY -v /data/workspace:/home -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-base:r32.3.1
然后在容器内安装g++(这个我觉得不可理解,NVIDIA为什么不在做镜像时提前安装好呢,安装g++挺耗时的,尤其网络不好时):
apt-get update && apt-get install -y --no-install-recommends make g++
然后依次执行下面的步骤把CUDA里的samples里一个叫nbody的程序编译后跑起来,可以看到炫酷的动画效果:
cp -r /usr/local/cuda/samples /tmp
cd /tmp/samples/5_Simulations/nbody
make
./nbody
贴两张图展示一下:
出现这个不断变化的星系一样的动画就表明容器内可正常使用GPU。此外,还可以编译和执行samples/1_Utilities/deviceQuery/下的deviceQuery,可以输出一些device参数,如果GPU不能使用会提示找不到GPU设备。这个测试可选。
一般PC或服务器上测试容器内是否可以正常使用GPU,使用这个命令pull nvidia/cuda这个镜像并在里面执行nvidia-smi命令:
sudo docker run --gpus all --rm nvidia/cuda nvidia-smi
但是Xavier这样的板子上是没有nvidia-smi的,可以改成使用/usr/bin/tegrastats,将容器外物理机上的/usr/bin/tegrastats拷贝到/data/workspace/下(因为上面启动容器时是把物理机的路径/data/workspace/映射到容器内/home),然后在容器内将/home/tegrastats拷贝到/usr/bin/下,然后执行 tegrastats|grep GR3D,可以看到不算输出一些信息。这个步骤不是必须的。
但是tegrastats输出的信息是不直观很难看的,也没有对系统全局的监控效果,我们可以使用Jetson序列板卡上的jtop这个神器,需要在Xavier的Ubuntu上直接安装jtop,在容器里安装jtop可以安装成功但是跑不起来报错,首先是容器内/usr/bin/下没有jetson_clocks,但是即使把jetson_clocks从容器外物理机上拷贝进来放到/usr/bin/下,也会报新的错误,看错误感觉应该是跟CUDA的只读挂载方式引起的,没时间细究是否可以解决这个问题,反正在容器外看监控也是一样的,CPU、RAM、GPU以及存储等设备的使用情况和CUDA、cuDNN版本等信息一目了然。
首先,确保Xavier上的Ubuntu里pip/pip3安装了(根据需要安装对应的版本):
sudo apt-get install python-pip
sudo apt-get install python3-pip
然后执行 sudo -H pip install jetson-stats 或sudo -H pip3 install jetson-stats安装jtop,但是pip直接安装包的方式经常连不上,所以可以使用源码方式安装,这样很快:
git clone https://github.com/rbonghi/jetson_stats.git
sudo python setup.py build #或 sudo python3 setup.py build
sudo python setup.py install #或 sudo python3 setup.py install
然后执行 sudo jtop,即可以看到弹出窗口,有5个页面,分别显示不同信息:
再参考我前面写的这篇文章配置Ubuntu18.04的远程桌面,就可以不用连接显示器和键盘鼠标,远程登录使用了。
配置NVIDIA Jetson AGX Xavier相关推荐
- 解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 + Xavier 配置远程桌面
解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 + Xavier 配置远程桌面 修复Desktop Sharing无法打开 编译生效 配置Deskt ...
- 基于NVIDIA Jetson AGX Xavier的移动机器人开发(1)——Xavier刷机、风扇配置、ROS安装
实验室有一台2020年购入的AGX Xavier计算平台,由于实车开发作实验较为麻烦,打算基于这台Xavier从头搭建一套缩小版的自动驾驶系统用于算法验证以及实验,同时锻炼从头搭建系统的能力.平台基于 ...
- NVIDIA Jetson AGX Xavier 安装 JetPack 注意事项
NVIDIA Jetson AGX Xavier 安装 JetPack 注意事项 本文主要记录了我第一次接触Linux和为NVIDIA Jetson AGX Xavier安装JetPack时遇到的一些 ...
- 手把手教你备份 nvidia jetson agx xavier 系统(亲测有效、超详细)
手把手教你备份 nvidia jetson agx xavier 系统(亲测有效.超详细) 此版本适合小白,网上虽然很多教程,但是对于超级小白来说还是有点粗略了,教程奉上! 文章目录 手把手教你备份 ...
- 玩转NVIDIA Jetson AGX Xavier
最近项目应用需要部署到边缘模块,所以就玩起了Xavier.感觉网上的资料不多,所以从头记录一下笔记,方便大家一起学习应用. 玩转NVIDIA Jetson AGX Xavier 1.刷机(安装sdkm ...
- NVIDIA Jetson AGX Xavier冰壶的跟踪与识别
NVIDIA Jetson AGX Xavier冰壶的跟踪与识别 一.项目简介 二.硬件平台的选取 2.1为什么选择NVIDIA Jetson AGX Xavier 三.识别环境配置 3.1 下载py ...
- NVIDIA Jetson AGX Xavier安装realsense2
NVIDIA Jetson AGX Xavier安装realsense2 由于实验需要,购买了AGX智盒,入手智盒一时爽,调试起来真要命,笔者在前期做了大量的工作,主要包括以下: 1.安装中文输入法, ...
- ZED2代相机+nvidia jetson AGX xavier踩坑记录
ZED2代相机+nvidia jetson AGX xavier踩坑记录 项目描述 nvidia jetson AGX xavier就不详细介绍了,jetson系列嵌入式开发板比一般的arrch64开 ...
- NVIDIA Jetson AGX Xavier主机刷机与SSD安装
任务逻辑 当有个新的AGX主机到手上后,主机是启动的是eMMC,大约30G存储 这个安装了系统后到后面随便弄一下就不够存储了,所以我是想要在主机上安装一个SSD,然后将系统直接放到SSD上,这种操作就 ...
最新文章
- CMakeLists.txt学习记录
- tomcat报 Context [] startup failed due toprevious errors
- java raster_Raster (Java 2 Platform SE 5.0)
- 限制输入框只能输入数字
- 为什么 scanf( )(scanf_s)函数老要输入两次才行?
- Oracle数据库锁诊断
- ASP.NET Core必备笔试题(含答案)
- 京东宣布收购拇指阅读,具体金额未披露
- java测试不成功_java – 测试@NotNull时集成测试失败
- mysql found row_mysql found_row()使用详解
- java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...
- 用HttpClient来模拟浏览器GET POST
- flex中的架构,(举例UIComponent类的继承关系)
- 机器学习精讲中7.1固定特征核中关于N维向量多项式特征映射的理解(一)
- opencv ffmpeg推流
- 计算机硬盘如何制作成移动硬盘,电脑拆出来的闲置硬盘别扔 这么做帮你把它变成移动硬盘...
- 为Springboot工作流版本myabaits的xml 建表
- 通过手机型号查找相应UA信息
- 修改Docker默认的数据目录
- 中富金石马力老师:2022年中央一号文件发布 时隔多年重提加强粮库建设
热门文章
- 感人的校园爱情故事 伤感日志分享
- 魅族pro6 android 6.0,魅族pro 6真机曝光:搭载Mback3.0和Flyme 6.0系统
- route虚拟服务器模拟,Windows Server 2012R2 路由和网桥设置
- 这是一条真程序员看了会沉默的裙子......
- 使用systemctl管理系统服务
- mysql 触发器delimiter_Mysql中的delimiter详解
- 阿波罗 planning代码-modules\planning\lattice\trajectory_generation\PiecewiseBrakingTrajectoryGenerator类详解
- 国际通行的打字速度评级标准
- 命令行mysql 中文乱码解决
- 在远离手机的120个小时里(四)