跳到主要内容

配置进程内存限制(OOM Killer)

jupyter notebook推理样例运行缓慢或跑不起来

现象描述

运行开箱推理样例时,推理执行缓慢或跑不起来。

可能原因

同时打开了多个推理样例notebook,占用了过多系统内存。

解决方案

关掉不需要用到的notebook,可以在侧边栏通过shutdown操作清理notebook,如图1图2所示:

图1 界面图

图2 界面图

父主题: 样例运行

创建交换分区

现象描述

为解决开发者套件上,使用ATC工具转换模型时会出现转换过程很慢或卡住不动的问题。该问题可能由于内存不足,导致进程卡死。用户可通过创建交换分区的方式以分担开发者套件的内存压力,当前镜像已提前为用户创建,若用户需要关闭或关闭后重新开启可参见此章节进行操作。

解决方案

创建交换分区

  1. root用户远程登录开发者套件。

  2. 创建一个大小为8G的swap分区。

    fallocate --length 8G /swapfile
  3. 修改文件权限。

    chmod 600 /swapfile
  4. 创建swap分区。

    mkswap /swapfile

    回显如下:

    Setting up swapspace version 1, size = 8 GiB (8589934592 bytes)
    no label, UUID=2b9e68ec-e6f5-46df-bd10-8f2955026de7
  5. 挂载swap分区。

    swapon /swapfile
  6. 执行命令查看分区是否创建成功。

    free -h

    -h,--human:以计算机硬盘存储容量的常用字节显示存储大小。

    回显如下:

    total used free shared buff/cache available
    Mem: 3.4Gi 795Mi 1。9Gi 33Mi 759Mi 2.4Gi
    Swap: 8.0Gi 0B 8.0Gi

关闭交换分区

  1. 执行命令临时禁用交换分区。

    swapoff -a
  2. 执行命令打开文件,注释部分代码。

    vi /vat/expan.sh

    按下i键进入编辑模式,将此行内容注释。

    swap_flag=$(free -h | grep Swap | cut -d' ' -f14 | cut -d'B' -f1)
    if [ "$swap_flag" == "0" ]; then
    mkswap /swapfile
    swapon /swapfile
    fi
  3. 执行命令打开文件,注释部分代码。

    vi /etc/fstab

    按下i键进入编辑模式,将此行内容注释。

    /swapfile

    注释后,开发者套件启动时将不会自动挂载交换分区。

  4. 执行命令重启开发者套件,生效配置。

    reboot

开启交换分区

  1. 执行命令打开文件,消除部分代码注释。

    vi /etc/fstab

    按下i键进入编辑模式,将此行内容注释。

    /swapfile

    注释后,开发者套件启动时将不会自动挂载交换分区。

  2. 执行命令重启开发者套件,生效配置。

    reboot

父主题: 样例运行

配置进程内存限制(OOM Killer)

现象描述

开发者套件的内存资源有限,如果某个进程占用的内存超出系统限制,可能出现系统异常,无法响应命令的现象,届时需要重新上下电才能恢复正常。因此,需要限制进程的内存占用量。

解决方案

关闭内存限制

  1. 执行以下命令关闭OOM Killer服务。

    systemctl disable oom_killer
  2. 分别将/root/.bashrc与/home/HwHiAiUser/.bashrc文件中代码注释。

    • 打开/root/.bashrc文件。

      vi /root/.bashrc
    • 打开/home/HwHiAiUser/.bashrc

      vi /home/HwHiAiUser/.bashrc

    注释以下代码:

    echo $$ > /sys/fs/cgroup/memory/usermemory/tasks
  3. 执行命令重启开发者套件。

    reboot

开启内存限制

:::note 说明 当前一键制卡工具提供的在线镜像中,root用户和HwHiAiUser用户已完成了以上操作,打开了该内存控制机制。 :::

  1. 执行以下命令开启OOM Killer服务。

    systemctl enable oom_killer
  2. 取消/root/.bashrc与/home/HwHiAiUser/.bashrc文件中代码注释。

    • 打开/root/.bashrc文件。

      vi /root/.bashrc
    • 打开/home/HwHiAiUser/.bashrc

      vi /home/HwHiAiUser/.bashrc

    取消以下代码注释:

    echo $$ > /sys/fs/cgroup/memory/usermemory.tasks
  3. 执行命令重启开发者套件。

    reboot

父主题: 样例运行

jupyter notebook运行多个推理样例后提示Kernel Restarting

现象描述

启动jupyter notebook运行多个推理样例后提示Kernel Restarting。

图1 错误提示

可能原因

同时打开了多个推理样例notebook,占用了过多系统内存。

解决方案

关掉不需要用到的notebook,可以在侧边栏通过shutdown操作清理notebook,如图1图2所示:

图2 界面图

图3 界面图

父主题: 样例运行

运行DVPP样例时出现fail to send frame问题

现象描述

在开发者套件上运行DVPP(数字视觉预处理)样例时, 出现fail to send frame问题,导致样例无法运行。

图1 报错信息

可能原因

运行样例时内存不足。

解决方案

执行以下命令清除缓存。

echo 1 > /proc/sys/vm/drop_caches

父主题: 样例运行

开发者套件支持使用QT(Python/C++)

现象描述

QT是一款跨平台的图形用户界面应用程序开发框架,支持C++及python接口。开发者套件支持通过远程登录工具或使用图形化桌面运行QT及项目,进行界面的查看。

解决方案

C++方式

  1. 远程登录开发者套件并配置网络。

  2. 执行以下命令安装QT及必要组件。

    sudo apt install --no-install-recommends \
    qtbase5-dev qtbase5-dev-tools qtdeclarative5-dev libqt5svg5-dev qttools5-dev libgnutls28-dev \
    qml-module-qtquick2 qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qtquick-templates2 qml-module-qtquick-window2 qml-module-qtgraphicaleffects qtcreator
  3. 执行命令运行QT。

    qtcreator

    designer

    图1 qtcreator界面

    图2 qtdesigner界面

  4. 打开已有或自编项目进行验证。

    图3 验证使用

Python方式

  1. 远程登录开发者套件并配置网络。

  2. 执行以下命令安装PyQt。

    conda install -c conda-forge pyqt
  3. 编写PyQt样例。

    import sys

    from PyQt5.QtWidgets import QApplication, QWidget, QLabel

    if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = QWidget()

    # 设置窗口标题
    w.setWindowTitle('小藤的PyQt!')
    label = QLabel('Welcome to Ascend Devkit!', parent=w)
    label.move(200, 200)

    w.setStyleSheet("background-color:yellow;")

    # 展示窗口
    w.show()

    # 程序进行循环等待状态
    app.exec_()
  4. 运行样例查看结果。

    python pyqt_demo.py

    图4 运行结果

父主题: 样例运行

在线提单