首先查看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相关推荐

  1. 解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 + Xavier 配置远程桌面

    解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 + Xavier 配置远程桌面 修复Desktop Sharing无法打开 编译生效 配置Deskt ...

  2. 基于NVIDIA Jetson AGX Xavier的移动机器人开发(1)——Xavier刷机、风扇配置、ROS安装

    实验室有一台2020年购入的AGX Xavier计算平台,由于实车开发作实验较为麻烦,打算基于这台Xavier从头搭建一套缩小版的自动驾驶系统用于算法验证以及实验,同时锻炼从头搭建系统的能力.平台基于 ...

  3. NVIDIA Jetson AGX Xavier 安装 JetPack 注意事项

    NVIDIA Jetson AGX Xavier 安装 JetPack 注意事项 本文主要记录了我第一次接触Linux和为NVIDIA Jetson AGX Xavier安装JetPack时遇到的一些 ...

  4. 手把手教你备份 nvidia jetson agx xavier 系统(亲测有效、超详细)

    手把手教你备份 nvidia jetson agx xavier 系统(亲测有效.超详细) 此版本适合小白,网上虽然很多教程,但是对于超级小白来说还是有点粗略了,教程奉上! 文章目录 手把手教你备份 ...

  5. 玩转NVIDIA Jetson AGX Xavier

    最近项目应用需要部署到边缘模块,所以就玩起了Xavier.感觉网上的资料不多,所以从头记录一下笔记,方便大家一起学习应用. 玩转NVIDIA Jetson AGX Xavier 1.刷机(安装sdkm ...

  6. NVIDIA Jetson AGX Xavier冰壶的跟踪与识别

    NVIDIA Jetson AGX Xavier冰壶的跟踪与识别 一.项目简介 二.硬件平台的选取 2.1为什么选择NVIDIA Jetson AGX Xavier 三.识别环境配置 3.1 下载py ...

  7. NVIDIA Jetson AGX Xavier安装realsense2

    NVIDIA Jetson AGX Xavier安装realsense2 由于实验需要,购买了AGX智盒,入手智盒一时爽,调试起来真要命,笔者在前期做了大量的工作,主要包括以下: 1.安装中文输入法, ...

  8. ZED2代相机+nvidia jetson AGX xavier踩坑记录

    ZED2代相机+nvidia jetson AGX xavier踩坑记录 项目描述 nvidia jetson AGX xavier就不详细介绍了,jetson系列嵌入式开发板比一般的arrch64开 ...

  9. NVIDIA Jetson AGX Xavier主机刷机与SSD安装

    任务逻辑 当有个新的AGX主机到手上后,主机是启动的是eMMC,大约30G存储 这个安装了系统后到后面随便弄一下就不够存储了,所以我是想要在主机上安装一个SSD,然后将系统直接放到SSD上,这种操作就 ...

最新文章

  1. CMakeLists.txt学习记录
  2. tomcat报 Context [] startup failed due toprevious errors
  3. java raster_Raster (Java 2 Platform SE 5.0)
  4. 限制输入框只能输入数字
  5. 为什么 scanf( )(scanf_s)函数老要输入两次才行?
  6. Oracle数据库锁诊断
  7. ASP.NET Core必备笔试题(含答案)
  8. 京东宣布收购拇指阅读,具体金额未披露
  9. java测试不成功_java – 测试@NotNull时集成测试失败
  10. mysql found row_mysql found_row()使用详解
  11. java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...
  12. 用HttpClient来模拟浏览器GET POST
  13. flex中的架构,(举例UIComponent类的继承关系)
  14. 机器学习精讲中7.1固定特征核中关于N维向量多项式特征映射的理解(一)
  15. opencv ffmpeg推流
  16. 计算机硬盘如何制作成移动硬盘,电脑拆出来的闲置硬盘别扔 这么做帮你把它变成移动硬盘...
  17. 为Springboot工作流版本myabaits的xml 建表
  18. 通过手机型号查找相应UA信息
  19. 修改Docker默认的数据目录
  20. 中富金石马力老师:2022年中央一号文件发布 时隔多年重提加强粮库建设

热门文章

  1. 感人的校园爱情故事 伤感日志分享
  2. 魅族pro6 android 6.0,魅族pro 6真机曝光:搭载Mback3.0和Flyme 6.0系统
  3. route虚拟服务器模拟,Windows Server 2012R2 路由和网桥设置
  4. 这是一条真程序员看了会沉默的裙子......
  5. 使用systemctl管理系统服务
  6. mysql 触发器delimiter_Mysql中的delimiter详解
  7. 阿波罗 planning代码-modules\planning\lattice\trajectory_generation\PiecewiseBrakingTrajectoryGenerator类详解
  8. 国际通行的打字速度评级标准
  9. 命令行mysql 中文乱码解决
  10. 在远离手机的120个小时里(四)