3月19日,NVIDIA的2019 GTC大會於硅谷召開,CEO黃仁勳發佈了 Jetson Nano,可爲機器人帶來足夠的AI運算力,99美圓的良心之做。javascript
Technical | Specifications |
---|---|
GPU | 128-core Maxwell |
CPU | Quad-core ARM A57 @ 1.43 GHz |
Memory | 4 GB 64-bit LPDDR4 25.6 GB/s |
Storage | microSD (not included) |
Video Encode | 4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30 (H.264/H.265) |
Video Decode | 4K @ 60 | 2x 4K @ 30 | 8x 1080p @ 30 | 18x 720p @ 30 (H.264/H.265) |
Camera | 1x MIPI CSI-2 DPHY lanes |
Connectivity | Gigabit Ethernet, M.2 Key E |
Display | HDMI 2.0 and eDP 1.4 |
USB | 4x USB 3.0, USB 2.0 Micro-B |
Others | GPIO, I2C, I2S, SPI, UART |
Mechanical | 100 mm x 80 mm x 29 mm |
CPU爲4核A57處理器,運行Linux for Tegra,GPU有128個Cuda核心,運算能力472G,功耗5W。php
開機時因爲須要在圖形界面上對系統進行設置,須要保證顯示設備(HDMI連到顯示器上)和控制設備(鍵盤和鼠標)都鏈接上。在開機設置完成後,能夠關閉圖形界面並使用SSH登錄,此時只須要連上電源和網線放在角落便可,固然也能夠用來墊桌角了。css
燒寫完成後,將SD卡插入Jetson Nano
,開機並完成用戶密碼、時區等設置,在終端使用ifconfig
命令獲取由路由器DHCP分配的IP地址,並在路由器中綁定IP
與MAC
地址,以後可經過固定IP來訪問,個人板子配置的固定IP是:192.168.1.115linux
設置完成後拔掉電源關機,此時能夠拔除USB鍵盤、鼠標和HDMI轉接線,能夠放在散熱良好的角落express
經過top
命令能夠看到內存佔用狀況ubuntu
KiB Mem : 4058432 total, 1593660 free, 1477904 used, 986868 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2378568 avail Mem
內存佔用1.5G左右,且沒有交換區vim
因爲內存和顯存共用,當內存佔用太多時,留給GPU使用的顯存就會不多,因此能夠關閉圖形界面從而留出更多的備用內存
sudo systemctl set-default multi-user.target sudo reboot # 結果: Removed /etc/systemd/system/default.target. Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
關閉圖形界面後的內存佔用:
%Cpu(s): 0.1 us, 0.6 sy, 0.0 ni, 98.9 id, 0.2 wa, 0.1 hi, 0.1 si, 0.0 st KiB Mem : 4059712 total, 3513880 free, 322932 used, 222900 buff/cache KiB Swap: 0 total, 0 free, 0 used. 3571064 avail Mem
能夠節省1.1G內存開銷用於其餘事務
sudo systemctl set-default graphical.target sudo reboot
SWAP(交換)分區是一種經過在硬盤中預先劃分必定的空間,而後將把內存中暫時不經常使用的數據臨時存放到硬盤中,以便騰出物理內存空間讓更活躍的程序服務來使用的技術,其設計目的是爲了解決真實物理內存不足的問題。但因爲交換分區畢竟是經過硬盤設備讀寫數據的,速度確定要比物理內存慢,因此只有當真實的物理內存耗盡後纔會調用交換分區的資源。
實際上,並非等全部的物理內存都消耗完畢以後,纔去使用swap的空間,何時使用是由swappiness 參數值控制。
雖然在SD卡上使用交換分區容易使SD卡壞的快一點,可是設置交換分區仍然有必要,將Swappiness參數設置接近零以儘量的使用內存而非SD卡的交換分區。
free -m total used free shared buff/cache available Mem: 3964 313 3424 17 226 3488 Swap: 0 0 0
df -h
Filesystem Size Used Avail Use% Mounted on /dev/root 118G 9.1G 104G 9% / devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 2.0G 4.0K 2.0G 1% /dev/shm tmpfs 2.0G 18M 2.0G 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup tmpfs 397M 0 397M 0% /run/user/1000
一般,swap空間等於或雙倍於系統內存的量是一個很好的選擇。若是將其用做RAM後備,那麼你的swap分區儘量不要超過4G。
咱們能夠在文件系統上建立一個swap分區。咱們將在根/
目錄中分配咱們想要調用的swap大小的文件swapfile。
建立交換文件的最佳方法是使用fallocate
。此命令將建立指定大小的文件。
sudo fallocate -l 4G /swapfile ls -lh /swapfile -rw-r--r-- 1 root root 4.0G 4月 29 20:25 /swapfile
咱們須要將swap文件轉換爲swap分區。首先,咱們須要鎖定文件的權限,以便只有具備root權限的用戶才能讀取內容。
經過輸入如下內容使該文件只能由root訪問:
sudo chmod 600 /swapfile
輸入如下命令驗證權限更改:
ls -lh /swapfile -rw------- 1 root root 4.0G /swapfile
只有root用戶啓用了讀寫標誌。
咱們如今能夠經過輸入如下內容將文件標記爲swap空間
sudo mkswap /swapfile Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) no label, UUID=e1a385f2-4431-4881-9beb-966adefd688d
標記文件後,咱們能夠啓用swap文件:
sudo swapon /swapfile
輸入如下內容驗證交換是否可用:
sudo swapon --show NAME TYPE SIZE USED PRIO /swapfile file 4G 0B -1
咱們能夠用free命令再次檢查:
free -h total used free shared buff/cache available Mem: 3.9G 318M 3.3G 17M 230M 3.4G Swap: 4.0G 0B 4.0G
swap已成功設置,操做系統將在必要時使用它。
雖然已啓用當前會話中的 swap
文件,可是,若是咱們從新啓動的話,服務器將不會自動保留 swap
設置。能夠經過將交換文件添加到咱們的 /etc/fstab
來進行更改。
爲了不出現任何問題,先備份/etc/fstab
文件:
sudo cp /etc/fstab /etc/fstab.bak
輸入如下內容,將swap文件信息添加到/etc/fstab文件末尾:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
接下來,咱們將調整咱們的swap空間。
(1)調整Swappiness參數
該swappiness參數主要配置系統將數據從RAM交換到交換空間的頻率。該參數的值是介於0和100之間的百分比。
當值接近於零時,除非絕對必要,不然內核不會將數據交換到磁盤。請記住,與swap文件的交互是「費時的」,由於它們比與RAM的交互花費更長的時間,而且它們可能致使性能的顯着下降。
當該值接近100時,其將嘗試將更多數據放入交換中以努力保留更多的RAM空間。咱們能夠經過輸入如下內容來查看當前的swappiness
值:
cat /proc/sys/vm/swappiness 60
對於服務器自己來講,您可能但願這個數值更接近於0。咱們可使用sysctl
命令將swappiness
設置爲不一樣的值。
例如,要將swappiness
設置爲10,咱們能夠輸入:
sudo sysctl vm.swappiness=10 vm.swappiness = 10
咱們能夠經過在/etc/sysctl.conf
文件中添加如下行來自動設置此值:
sudo nano /etc/sysctl.conf
在底部,您能夠添加:
vm.swappiness=10
完成後保存並關閉文件。
(2)調整緩存壓力設置
您可能想要修改的另外一個相關值是vfs_cache_pressure
。這將關係到系統選擇多少緩存inode
和dentry
信息。
您能夠經過proc命令來查看當前值:
cat /proc/sys/vm/vfs_cache_pressure 100
個人設置系統會很快地從緩存中刪除inode
信息。咱們能夠經過輸入如下內容將其設置爲更保守的值(如50):
sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50
一樣,這僅適用於咱們當前的會話。咱們能夠經過將其添加到配置文件來改變它,就像咱們使用swappiness
設置同樣:
sudo nano /etc/sysctl.conf
在底部,添加指定新值的行:
vm.vfs_cache_pressure=50
完成後保存並關閉文件。
Jetson Nano
採用的是 aarch64
架構的Ubuntu 18.04.2 LTS
系統
Nano的鏡像默認是國外的源,速度很慢,國內的源有的上不去,有的包沒法安裝,通過測試清華大學的源完美可用,現放上教程
首先備份本來的 source.list
文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #爲防止誤操做後沒法恢復,先備份原文件sources.list sudo vim /etc/apt/sources.list
而後刪除全部內容,複製
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
到 sources.list
後保存,以後打開終端輸入
#刷新存儲庫索引 sudo apt-get update #在升級軟件包時自動處理依賴關係 sudo apt-get full-upgrade
因爲在使用時常常查看CPU和共享的內存佔用,系統自帶的top
命令並很差用,可使用更好用的 htop,使用以下命令安裝
sudo apt install htop htop
htop
能夠看到每一個CPU核心的使用率、共享內存的使用率,方便直觀
Jetson-nano
的OS鏡像已經自帶了JetPack
,cuda
,cudnn
,opencv
等已經安裝好的庫,並有例子,這些例子安裝路徑以下所示
包 | 路徑 |
---|---|
TensorRT | /usr/src/tensorrt/samples/ |
CUDA | /usr/local/cuda-/samples/ |
cuDNN | /usr/src/cudnn_samples_v7/ |
Multimedia API | /usr/src/tegra_multimedia_api/ |
VisionWorks | /usr/share/visionworks/sources/samples/ /usr/share/visionworks-tracking/sources/samples/ /usr/share/visionworks-sfm/sources/samples/ |
OpenCV | /usr/share/OpenCV/samples/ |
#查看Jetson Nano L4T版本: head -n 1 /etc/nv_tegra_release R32 (release), REVISION: 1.0, GCID: 14531094, BOARD: t210ref, EABI: aarch64, DATE: Wed Mar 13 07:46:13 UTC 2019 #查看系統版本 cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" #查看系統內核 uname -a Linux nv 4.9.140-tegra #1 SMP PREEMPT PDT 2019 aarch64 aarch64 aarch64 GNU/Linux #查看內存 free -m total used free shared buff/cache available Mem: 3964 393 2949 25 621 3387 Swap: 4095 0 4095 #查看CPU詳情 lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Vendor ID: ARM Model: 1 Model name: Cortex-A57 Stepping: r1p1 CPU max MHz: 1428.0000 CPU min MHz: 102.0000 BogoMIPS: 38.40 L1d cache: 32K L1i cache: 48K L2 cache: 2048K Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 #查看硬盤分區 sudo parted -l Error: /dev/mtdblock0: unrecognised disk label Model: Unknown (unknown) Disk /dev/mtdblock0: 4194kB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: Model: SD SC128 (sd/mmc) Disk /dev/mmcblk0: 128GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 2 1049kB 1180kB 131kB TBC 3 2097kB 2556kB 459kB RP1 4 3146kB 3736kB 590kB EBT 5 4194kB 4260kB 65.5kB WB0 6 5243kB 5439kB 197kB BPF 7 6291kB 6881kB 590kB TOS 8 7340kB 7406kB 65.5kB EKS 9 8389kB 9044kB 655kB LNX 10 9437kB 9896kB 459kB DTB 11 10.5MB 10.6MB 131kB RP4 12 11.5MB 11.6MB 81.9kB BMP 1 12.6MB 128GB 128GB ext4 APP #查看硬盤空間 df -h Filesystem Size Used Avail Use% Mounted on /dev/root 118G 16G 97G 15% / devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 2.0G 4.0K 2.0G 1% /dev/shm tmpfs 2.0G 26M 2.0G 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup tmpfs 397M 12K 397M 1% /run/user/1000 #查看正在運行的進程 htop #查看USB設備 lsusb Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub #查看PCI總線 lspci 00:02.0 PCI bridge: NVIDIA Corporation Device 0faf (rev a1) 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15) #查看系統已載入的相關模塊 lsmod Module Size Used by nvs 54527 0 nvgpu 1555053 3 bluedroid_pm 13912 0 ip_tables 19441 0 x_tables 28951 1 ip_tables #查看硬件 sudo lshw nv description: Computer product: jetson-nano serial: 04212190206840c08401 width: 64 bits capabilities: smp cp15_barrier setend swp *-core description: Motherboard physical id: 0 *-cpu:0 description: CPU product: cpu physical id: 0 bus info: cpu@0 size: 1428MHz capacity: 1428MHz capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq *-cpu:1 description: CPU product: cpu physical id: 1 bus info: cpu@1 size: 1428MHz capacity: 1428MHz capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq *-cpu:2 description: CPU product: cpu physical id: 3 bus info: cpu@2 size: 1428MHz capacity: 1428MHz capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq *-cpu:3 description: CPU product: cpu physical id: 4 bus info: cpu@3 size: 1428MHz capacity: 1428MHz capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq *-cpu:4 DISABLED description: CPU product: idle-states physical id: 5 bus info: cpu@4 *-cpu:5 DISABLED description: CPU product: l2-cache physical id: 6 bus info: cpu@5 *-memory description: System memory physical id: 7 size: 3964MiB *-pci description: PCI bridge product: NVIDIA Corporation vendor: NVIDIA Corporation physical id: 2 bus info: pci@0000:00:02.0 version: a1 width: 32 bits clock: 33MHz capabilities: pci pm msi ht pciexpress normal_decode bus_master cap_list configuration: driver=pcieport resources: irq:84 ioport:1000(size=4096) memory:13000000-130fffff *-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:01:00.0 logical name: eth0 version: 15 serial: 00:04:4b:e4:0c:db size: 100Mbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.045.08-NAPI duplex=full ip=192.168.1.115 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s resources: irq:404 ioport:1000(size=256) memory:13004000