PG-STROM 2.3 安装与部署

时间:2024-05-23 16:39:51

一、Tesla 基础环境部署

1、安装GPU Tesla Driver 在编译Linux kernel module所需要的安装包,包括gcc、kernel devel、kernel headers

# uname -r

3.10.0-514.26.2.el7.x86_64

# yum install -y gcc kernel-devel-($uname -r) kernel-headers

# yum install -y gcc kernel-devel-3.10.0-514.26.2.el7.x86_64 kernel-headers

 

2、选择正确的驱动并安装

1)开链接 http://www.nvidia.com/Download/Find.aspx

2)根据连接选择合适的驱动

# wget http://us.download.nvidia.com/tesla/440.64.00/NVIDIA-Linux-x86_64-440.64.00.run

3)对安装包加执行权限

# chmod +x NVIDIA-Linux-x86_64-440.64.00.run

4)安装驱动程序

# sudo /bin/bash ./NVIDIA-Linux-x86_64-440.64.00.run

安装过程中出现的warning

WARNING: nvidia-installer was forced to guess the X library path            

           '/usr/lib64' and X module path '/usr/lib64/xorg/modules'; these

           paths were not queryable from the system.  If X fails to find the

           NVIDIA X driver module, please install the `pkg-config` utility and

           the X.Org SDK/development package for your distribution and

           reinstall the driver. 

 

3、安装cuda

首先进入官网找到合适的cuda版本。

# rpm -i cuda-repo-rhel7-7.5-18.x86_64.rpm (有个warning 应该不影响)

# yum clean all

# yum install -y cuda

 

 

4、验证安装正确性

1)确认设备存在(lspci 可以通过安装yum install -y pciutils-3.2.1-4.el7.x86_64 – yum provide lspci)

# lspci | grep -i nvidia

00:06.0 3D controller: NVIDIA Corporation Device 1db5 (rev a1)

# nvidia-smi

PG-STROM 2.3 安装与部署

 

5、安装失败可能存在的原因

Linux 系统驱动安装失败表现为 nvidia-smi 无法工作,一般有下面几个常见原因:

系统缺乏编译 kernel module 所需要的包,如 gcckernel-devel-xxx 等,导致无法编译,最终安装失败。

系统里面存在多个版本的 kernel,由于 DKMS 的不正确配置,导致驱动编译为非当前版本 kernel kernel moudule,导致 kernel module 安装失败。

安装驱动后,升级了 kernel 版本导致原来的安装失效。

CUDATesla driver是两个不同的模块,在安装过程中,可能会遗漏CUDA的安装导致后续PG-Strom的编译失败。

在安装CUDA的过程中,如果出现部分包没有下载的情况,可以用以下的命令:

# yum --enablerepo=cuda clean metadata

 

二、PG-Strom 基础环境部署

注:EPEL Repository是选安装,其支持GPU driver的安装和NVMe-Strom 组件的kernel编译,暂时用不着。

 

1)安装PostgreSQL – PostgreSQL 11

① 安装RPM repository

# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

② 安装客户端

# yum install postgresql11

③ 安装服务端

# yum install postgresql11-server

④ 启动服务

# /usr/pgsql-11/bin/postgresql-11-setup initdb

# systemctl enable postgresql-11

# systemctl start postgresql-11

 

2)数据目录与启用服务验证

自动化创建的话,其数据目录为:/var/lib/pgsql/11/data

其编译目录为:/usr/pgsql-11/bin

 

如果你用root进行了自动部署,其会创建一个postgres的用户:

# cat /etc/passwd| grep -i postgres

postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

 

修改postgres用户的密码

# passwd postgres

 

3)构建PG-Strom

① 获取源代码

# git clone https://github.com/heterodb/pg-strom.git

 

② 构建PG-Strom

# cd pg-strom

# make PG_CONFIG=/usr/pgsql-11/bin/pg_config

(1)报错:

grep: /include/cuda.h: No such file or directory

/bin/sh: line 0: test: -ge: unary operator expected

/bin/sh: line 0: test: -ge: unary operator expected

Makefile:256: /usr/pgsql-11/lib/pgxs/src/makefiles/pgxs.mk: No such file or directory

make: *** No rule to make target `/usr/pgsql-11/lib/pgxs/src/makefiles/pgxs.mk'.  Stop.

 

解决方法:

# yum install -y postgresql11-devel

-- 在开发Postgres的自有插件的过程中,需要添加postgresql11-devel

 

2)报错

/bin/sh: /opt/rh/llvm-toolset-7/root/usr/bin/clang: No such file or directory

解决方法:

# vim /usr/pgsql-11/lib/pgxs/src/makefiles/pgxs.mk

注释掉所有5处llvm判断

 

# make install PG_CONFIG=/usr/pgsql-11/bin/pg_config

 

③ 设置PostgreSQL的配置

# vim /var/lib/pgsql/11/data/postgresql.conf

修正以下参数:

shared_preload_libraries = ‘pg_strom.so’

max_worker_process = 16

shared_buffers = 1GB

work_mem=512MB

 

④ 重启PostgreSQL

# systemctl stop postgresql-11

# systemctl status postgresql-11

# systemctl start postgresql-11

或者

# cd /usr/pgsql-11/bin/

# ./pg_ctl -D /var/lib/pgsql/11/data/ -l /var/lib/pgsql/11/data/logfile start