关于CGI和FastCGI的理解

[TOC] 关于CGI和FastCGI的理解 阅读目录 0.CGI的引入 1.关于CGI 1.1.什么是CGI? 1.2.CGI程序的工作原理 1.3.CGI程序的特点 1.4.CGI程序的应用领域 2.关于FastCGI 2.1.什么是FastCGI? 2.2.FastCGI程序的工作原理 2.3.FastCGI对进程的管理方式 2.4.FastCGI的特点: 2.5.FastCGI程序的应用领域 2.6.关于CGI和FastCGI的总结 3.关于PHP-CGI,PHP-FPM和Spawn-FCGI 3.1.PHP-CGI是什么? 3.2.关于php-fpm 3.3.关于Spawn-FCGI 3.4.PHP-FPM与spawn-CGI对比 4.PHP运行的5种模式 4.1.cli模式 4.2.CGI模式 4.3.FastCGI模式 4.4.ISAPI运行模式 4.5.apache模块运行模式 4.6.总结一下 5.参考文章: 转载:关于CGI和FastCGI的理解 在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM、FastCGI和CGI 这几个概念。如果对它们一知半解,很难搭建出高性能的服务器。 0.CGI的引入 在网站的整体架构中,Web Server(如nginx,apache)只是内容的分发者,对客户端的请求进行应答。 如果客户端请求的是index.html这类静态页面,那么Web Server就去文件系统中找对应的文件,找到返回给客户端(一般是浏览器),在这里Web Server分发的就是是静态数据。 整个过程如下图: 对于像index.php这类的动态页面请求,Web Server根据配置文件知道这个不是静态文件,则会调用PHP 解析器进行处理然后将返回的数据转发给客户端(浏览器)。 整个过程如下图: 在这个过程中,Web Server并不能直接处理静态或者动态请求,对于静态请求是直接查找然后返回数据或者报错信息,对于动态数据也是交付给其他的工具(这里的PHP解析器)进行处理。 那么Web Server和处理工具(这里的php-fpm)是怎样进行交互的呢?传输的是那些数据呢?这些数据的格式又是怎样的呢? 由此便引出了今天的主角:CGI 1.关于CGI 1.1.什么是CGI? 1)CGI(Common Gateway Interface)全称是“通用网关接口”,是一种让客户端(web浏览器)与Web服务器(nginx等)程序进行通信(数据传输)的协议。 用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTP header等,也就是为了保证web server传递过来的数据是标准格式的。 2)CGI可以用任何一种具有标准输入、输出和环境变量的语言编写,如php、perl、tcl等。 不同类型语言写的程序只要符合cgi标准,就能作为一个cgi程序与web服务器交互,早期的cgi大多都是c或c++编写的。 3)一般说的CGI指的是用各种语言编写的能实现该功能的程序。 1.2.CGI程序的工作原理 1)每次当web server收到index.php这种类型的动态请求后,会启动对应的CGI程序(PHP的解析器); 2)PHP解析器会解析php.ini配置文件,初始化运行环境,然后处理请求,处理完成后将数据按照CGI规定的格式返回给web server然后退出进程; 3)最后web server再把结果返回给浏览器。 ...

September 3, 2017

Celery简介以及与Redis的集成使用

[TOC] Celery 1.什么是Clelery Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时提供操作和维护分布式系统所需的工具. Celery架构 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。 消息中间件 Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等 任务执行单元 Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。 任务结果存储 Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等 版本支持情况 Celery version 4.0 runs on Python ❨2.7, 3.4, 3.5❩ PyPy ❨5.4, 5.5❩ This is the last version to support Python 2.7, and from the next version (Celery 5.x) Python 3.5 or newer is required. If you’re running an older version of Python, you need to be running an older version of Celery: Python 2.6: Celery series 3.1 or earlier. Python 2.5: Celery series 3.0 or earlier. Python 2.4 was Celery series 2.2 or earlier. Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform. 2.使用场景 异步任务:将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等 ...

August 15, 2017

Redis持久化

[TOC] Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数 据恢复。理解掌握持久化机制对于Redis运维非常重要 1.RDB持久化 RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发 1)触发机制 手动触发分别对应save和bgsave命令 ·save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用 ·bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子 进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短 2)自动触发RDB的持久 1)使用save相关配置,如“save m n”。表示m秒内数据集存在n次修改 时,自动触发bgsave。 2)如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点,更多细节见6.3节介绍的复制原理。 3)执行debug reload命令重新加载Redis时,也会自动触发save操作。 4)默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则 自动执行bgsave。 bgsave是主流的触发RDB持久化方式 1)执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进 程,如RDB/AOF子进程,如果存在bgsave命令直接返回。 2)父进程执行fork操作创建子进程,fork操作过程中父进程会阻塞,通 过info stats命令查看latest_fork_usec选项,可以获取最近一个fork操作的耗时,单位为微秒 3)父进程fork完成后,bgsave命令返回“Background saving started”信息并不再阻塞父进程,可以继续响应其他命令。 4)子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后 对原有文件进行原子替换。执行lastsave命令可以获取最后一次生成RDB的 时间,对应info统计的rdb_last_save_time选项。 5)进程发送信号给父进程表示完成,父进程更新统计信息,具体见 info Persistence下的rdb_*相关选项。 RDB文件的处理 保存:RDB文件保存在dir配置指定的目录下,文件名通过dbfilename配 置指定。可以通过执行config set dir{newDir}和config set dbfilename{newFileName}运行期动态执行,当下次运行时RDB文件会保存到新目录。 RDB的优缺点 RDB的优点: ·RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据 快照。非常适用于备份,全量复制等场景。比如每6小时执行bgsave备份, 并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复。 ·Redis加载RDB恢复数据远远快于AOF的方式。 RDB的缺点: ·RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运 行都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高。 ·RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式 的RDB版本,存在老版本Redis服务无法兼容新版RDB格式的问题。 针对RDB不适合实时持久化的问题,Redis提供了AOF持久化方式来解决。 2.AOF持久化 AOF(append only file)持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用 是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式 1)使用AOF 开启AOF功能需要设置配置:appendonly yes,默认不开启。AOF文件名 通过appendfilename配置设置,默认文件名是appendonly.aof。保存路径同 RDB持久化方式一致,通过dir配置指定。AOF的工作流程操作:命令写入 (append)、文件同步(sync)、文件重写(rewrite)、重启加载 (load) ...

August 12, 2017

MinIO

[TOC] MinIO MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。 MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。 docker install 官方强烈推荐使用docker安装。轻量服务嘛。 docker pull minio/minio docker run -p 9000:9000 minio/minio server /data 其他方式参考官方咯, 安装由于很简单,这里就不写了。 MinIO SDK minio有支持各种语言的SDK,你甚至可以用它来链接aws的s3, 下面一Python为例,客户端连接服务。 首先安装minio模块 pip install minio 链接minio server from minio import Minio from minio.error import ResponseError minioClient = Minio('minio.domain.com', access_key='xxxxx', secret_key='xxxxx', secure=True) 链接aws s3 server from minio import Minio from minio.error import ResponseError s3Client = Minio('s3.amazonaws.com', access_key='YOUR-ACCESSKEYID', secret_key='YOUR-SECRETACCESSKEY', secure=True) 操作的话主要分为四类: Bucket operations , Object operations , Presigned operations 和 Bucket policy ,怎么样? 是不是跟aws的s3一样一样的。具体参考 python-client-api-reference

August 5, 2017

infiniband安装配置

[TOC] 基本概念 RDMA Remote Direct Memory Access: 为了解决网络传输中服务器端数据处理的延迟而产生,通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,不需要用到多少计算机的处理功能。 IB infiniband,是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连,它用到了RDMA技术。 IPoIB Internet Protocol over InfiniBand,利用物理IB网络通过IP协议进行连接,并进行数据传输。性能稍低于rdma,但是比普通的千兆网要快很多。目前在集群nfs上测试,可以10Gb/s 安装infiniband 安装包 infiniband驱动模块是需要在所有infiniband节点安装。 驱动模块,以下软件包之一: 以下软件包之一:infinipath-psm 、libcxgb3、libcxgb4、libehca、libipathverbs、libmthca、libmlx4、libmlx5、libnes 及 libocrdma libibverbs 提供InfiniBand Verbs API yum install libibverbs yum install rdma #RDMA栈内核初始化 systemctl start rdma opensm opensm可以搭建管理子网络。 yum install opensm 测试工具 infiniband-diags 或 ibutils 为 InfiniBand 结构管理提供大量有用的调试工具。这些工具只 为 iWARP 或 RoCE 提供有限功能,因为大多数工具可在 InfiniBank 链接层工作,但无法在 Verbs API 层 使用。 qperf和perftest 用于各种 RDMA 通讯类型的性能测试应用程序。 ------------------------------------ 查看所有node的配置信息 ------------------------------------ iblinkinfo CA: node5 mlx5_0: 0x248a07030058f544 1 1[ ] ==( 4X 25.78125 Gbps Active/ LinkUp)==> 11 34[ ] "MF0;switch-ab29a6:MSB7700/U1" ( ) CA: node6 mlx5_0: 0x248a07030058f650 8 1[ ] ==( 4X 25.78125 Gbps Active/ LinkUp)==> 11 32[ ] "MF0;switch-ab29a6:MSB7700/U1" ( ) 11 32[ ] ==( 4X 25.78125 Gbps Active/ LinkUp)==> 8 1[ ] "node6 mlx5_0" ( ) 11 34[ ] ==( 4X 25.78125 Gbps Active/ LinkUp)==> 1 1[ ] "node5 mlx5_0" ( ) ------------------------------------ ibping test RDMA ------------------------------------ 首先启动opensm服务 然后查看每个node节点的infiniband信息 ibv_devinfo 或者 ibstat都行 [root@master rdma]#ibv_devinfo && ibstat hca_id: mlx5_0 transport: InfiniBand (0) fw_ver: 12.17.1010 node_guid: 248a:0703:0058:f504 sys_image_guid: 248a:0703:0058:f504 vendor_id: 0x02c9 vendor_part_id: 4115 hw_ver: 0x0 board_id: MT_2180110032 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 2 port_lid: 2 port_lmc: 0x00 link_layer: InfiniBand CA 'mlx5_0' CA type: MT4115 Number of ports: 1 Firmware version: 12.17.1010 Hardware version: 0 Node GUID: 0x248a07030058f504 System image GUID: 0x248a07030058f504 Port 1: State: Active Physical state: LinkUp Rate: 100 Base lid: 2 LMC: 0 SM lid: 2 Capability mask: 0x2659e84a Port GUID: 0x248a07030058f504 Link layer: InfiniBand 在服务端 ibping -S -C mlx5_0 -P 1 -L 2 ibping -S -C mlx5_0 -P 1 -G 0x248a07030058f504 -S 以server启动 -C 就是指明CA的名称 -P 指明port -L 指明port_lid/Base lid -G 指明GUID 在客户端 ibping -c 10000 -f -C mlx5_0 -P 1 -L 2 指明你要ping的服务端的 -C -P -G -L等 结果如下: [root@node2 ~]#ibping -c 10000 -f -C mlx5_0 -P 1 -L 2 --- master.(none) (Lid 2) ibping statistics --- 10000 packets transmitted, 10000 received, 0% packet loss, time 1364 ms rtt min/avg/max = 0.034/0.136/0.849 ms IPoIB ------------------------------------ IPoIB 配置 ------------------------------------ #cat /etc/sysconfig/network-scripts/ifcfg-mlx5_ib0 # Generated by dracut initrd DEVICE=mlx5_ib0 #这里必须对应/etc/udev/rules.d/70-persistent-ipoib.rules 中的 NAME="mlx5_ib0" TYPE=InfiniBand #这里必须是InfiniBand ONBOOT=yes HARDWAR=80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:58:f5:04 BOOTPROTO=none IPADDR=172.16.20.10 NETMASK=255.255.255.0 BROADCAST=172.16.20.255 NAME=mlx5_ib0 #这里对应ifconfig中的网卡名称 MTU=65520 #设置连接模式最大MTU STARTMODE='auto' NM_CONTROLLED=no CONNECTED_MODE=yes #设置连接模式 #ifup mlx5_ib0 通过IPoIB配置nfs 服务端: yum install nfs-utils modprobe svcrdma systemctl start nfs echo rdma 20049 > /proc/fs/nfsd/portlist cat /proc/fs/nfsd/portlist rdma 20049 udp 2049 tcp 2049 客户端: modprobe xprtrdma mount -o rdma,port=20049 172.16.20.10:/atlas /atlas cat /etc/fstab 172.16.20.10:/atlas /atlas nfs defaults 0 0 /dev/sda1 /scratch ext4 defaults 0 0 mount | grep my_directory ...proto=rdma,port=20049,...

August 1, 2017

slurm 安装文档

[TOC] SLURM是一款集群资源管理调度软件,适合深度学习集群管理调度. 清理软件 卸载已安装的软件 yum remove -y munge* yum remove -y slurm* 清除自建文件和目录 log文件 /var/spool/ 下的目录和文件 注意检查文件的权属 在master节点安装MariaDB 数据库 yum install mariadb-server mariadb-devel -y 安装 munge 1. 在 master 节点创建 UID 和 GID export MUNGEUSER=1050 groupadd -g $MUNGEUSER munge useradd -m -c "MUNGE Uid 'N' Gid Emporium" -d /var/lib/munge -u $MUNGEUSER -g munge -s /sbin/nologin munge export SlurmUSER=1051 groupadd -g $SlurmUSER slurm useradd -m -c "Slurm workload manager" -d /var/lib/slurm -u $SlurmUSER -g slurm -s /bin/bash slurm 2. 在所有计算节点创建相同的UID 和 GID 进行 munge 安装 1. 先安装最新的 epel-release RPM yum install epel-release 2. 安装 MUNGE RPM 包 yum install munge munge-libs munge-devel -y 3. 检查加密方式 munge -C munge -M 4. 在mater 节点创建所有 node 需要的秘钥。 yum install rng-tool -y /usr/sbin/create-munge-key -r dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key chown munge: /etc/munge/munge.key chmod 400 /etc/munge/munge.key 5. 将 /etc/munge/munge.key 拷贝到其他节点 export NODE=172.16.10.18 scp /etc/munge/munge.key root@login:/etc/munge scp /etc/munge/munge.key root@node1:/etc/munge 6. 在所有节点上设置权限和所属 : chown -R munge: /etc/munge/ /var/log/munge/ chmod 0700 /etc/munge/ /var/log/munge/ 7. 在所有节点上运行 munge: systemctl enable munge systemctl start munge 8. 测试 munge -n munge -n | unmunge # Displays information about the MUNGE key munge -n | ssh somehost unmunge remunge 二、安装 Slurm 1. 先安装一下支持的软件包: yum install rpm-build gcc openssl openssl-devel pam-devel numactl numactl-devel \ hwloc hwloc-devel lua lua-devel readline-devel rrdtool-devel ncurses-devel \ gtk2-devel man2html libibmad libibumad perl-Switch perl-ExtUtils-MakeMaker 2. 下载最新的slurm 版本到存储节点NFS文件下 cd /gensoft/slurm-rpms export VER=17.02.0 wget http://www.schedmd.com/download/latest/slurm-17.02.0.tar.bz2 3. 在所有节点上编译并安装 rpmbuild -ta slurm-$VER.tar.bz2 cd /root/rpmbuild/RPMS/x86_64 yum install slurm-$VER*rpm slurm-devel-$VER*rpm slurm-munge-$VER*rpm \ slurm-perlapi-$VER*rpm slurm-plugins-$VER*rpm slurm-torque-$VER*rpm \ slurm-seff-$VER*rpm # OR yum install slurm*rpm 4. 配置 slurm 访问网站 http://slurm.schedmd.com/configurator.html 进行配置填写,完成后下载文件 ...

July 26, 2017

高堂

[TOC] 高堂 高堂:原意是房屋的正室厅堂,后来也指对父母的敬称。 《后汉书·马融传》:“常坐高堂,施绛纱帐,前授生徒,后列女乐。 例: 君不见,高堂明镜悲白发,朝如青丝暮成雪。 一拜天地,二拜高堂,夫妻对拜,送入洞房 一要感恩天地,珍惜美好姻缘 二要感恩父母,共同孝敬老人 三要互相感恩,珍惜对方,尊重对方, 最后礼拜结束入洞房。

July 17, 2017

openhpc

[TOC] 什么是OpenHPC OpenHPC是一个聚合了众多常见部署应用和管理的系统框架.简单来说就是,集群中想要部署什么应用只需要一次制作好,集群中各个节点运行相同的image,完全统一,适合做高性能计算集群的搭建 .官方原话如下: Welcome to the OpenHPC site. OpenHPC is a collaborative, community effort that initiated from a desire to aggregate a number of common ingredients required to deploy and manage High Performance Computing (HPC) Linux clusters including provisioning tools, resource management, I/O clients, development tools, and a variety of scientific libraries. Packages provided by OpenHPC have been pre-built with HPC integration in mind with a goal to provide re-usable building blocks for the HPC community. 我这是在CentOS7上面搭建的,官方给出了相应的安装文档,不过里面东西很多,没告诉你为什么这么做,照着做也会出很多问题.下面我就结合自己制作的操作过程记录如下: ...

July 9, 2017

munge编译安装

[TOC] master 节点 创建文档 sudo mkdir -p /atlas/configs/munge_v0.5.12/munge sudo mkdir -p /atlas/gensoft/munge_v0.5.12/lib/munge sudo mkdir -p /atlas/gensoft/munge_v0.5.12/sbin/nologin 创建 munge ID export MUNGEUSER=2001 sudo groupadd -g $MUNGEUSER munge sudo useradd -m -c "MUNGE Uid 'N' Gid Emporium" -d /atlas/gensoft/munge_v0.5.12/lib/munge -u $MUNGEUSER -g munge -s /atlas/gensoft/munge_v0.5.12/sbin/nologin munge munge下载 到 https://dun.github.io/munge/ 下载 tar.gz 最新版本 文件放置到atlas/backup/munge_v0.5.12 中 解压 sudo tar zxvf dun-munge-munge-0.5.12-24-gd11b5fe.tar.gz cd dun-munge-d11b5fe 安装 sudo ./configure --prefix=/atlas/gensoft/munge_v0.5.12 --sysconfdir=/atlas/configs/munge_v0.5.12 --localstatedir=/atlas/gensoft/munge_v0.5.12 sudo make -j 4 sudo make install 配置环境变量 vim /etc/profile.d/munge.sh export PATH=/atlas/gensoft/munge_v0.5.12/usr/bin:$PATH export PATH=/atlas/gensoft/munge_v0.5.12/usr/sbin:$PATH . /etc/profile.d/munge.sh 检查加密方式 munge -C munge -M 在mater 节点创建所有 node 需要的秘钥 dd if=/dev/urandom bs=1 count=1024 > /atlas/configs/munge_v0.5.12/munge/munge.key chown munge: /atlas/configs/munge_v0.5.12/munge/munge.key chmod 400 /atlas/configs/munge_v0.5.12/munge/munge.key 将/atlas/configs/munge_v0.5.12 /munge/munge.key 拷贝到其他节点 login scp /atlas/configs/munge_v0.5.12/munge/munge.key root@172.16.10.18:/atlas/configs/munge_v0.5.12/munge node5 scp /atlas/configs/munge_v0.5.12/munge/munge.key root@172.16.10.15:/atlas/configs/munge_v0.5.12/munge 在所有节点上设置权限和所属 chown -R munge: /atlas/configs/munge_v0.5.12/munge/ /atlas/gensoft/munge_v0.5.12/log/munge/ chmod 0700 /atlas/configs/munge_v0.5.12/munge/ /atlas/gensoft/munge_v0.5.12/log/munge/ 在所有节点上运行 munge /atlas/configs/munge_v0.5.12/rc.d/init.d/munge start

July 8, 2017

基于singularity的deepchem-GPU镜像制作

[TOC] 准备前提 首先你的pc要安装了singularity,下载好了cuda,cudnn,anaconda.而在集群上这些都已经准备好了. 制作基础系统镜像 mkdir ~/deepchem-build && cd ~/deepchem-build cp /atlas/backup/images/centos.def ./ singularity build --sandbox centos centos.def 准备下载好的应用. cp /atlas/backup/software/{Anaconda3-5.1.0-Linux-x86_64.sh, cudnn-9.1-linux-x64-v7.1.tgz } ./ cp /etc/yum.repos.d/base.repo ./ # base.repo 中是在安装软件过程中所依赖的绝大部分安装包和cuda, 用本地源提高速度节省时间. cat /etc/yum.repos.d/base.repo [development] name=development baseurl=ftp://172.16.10.10/centos7.2 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [epel] name=epel baseurl=ftp://172.16.10.10/epel gpgcheck=0 [cuda] name=cuda baseurl=ftp://172.16.10.10/cuda/cuda gpgcheck=0 在镜像中安装应用. singularity shell -w centos cp base.repo /etc/yum.repos.d/ yum repolist yum -y install vim wget perl git curl bzip2 export LANG=en_US.UTF-8 #设定系统字符编码 # install Anaconda3 bash Anaconda3-5.1.0-Linux-x86_64.sh -f -b -p -s /usr/local/anaconda3 export PATH=/usr/local/anaconda3/bin:$PATH # install nvidia-driver cuda yum install cuda tar xf cudnn-9.1-linux-x64-v7.1.tgz -C /usr/local/ # test nvidia-smi nvcc --version # if you can not get gpu information by nvidia-smi # reload the nvidia modules lsmod | grep nvidia systemctl stop gmond rmmod nvidia_drm rmmod nvidia_modeset rmmod nvidia_uvm rmmod nvidia nvidia-smi #or cannot to reboot , can change the nvidia kernel module by hand rm -rf /lib/modules/3.10.0-327.el7.x86_64/extra/nvidia* cp /var/lib/dkms/nvidia/387.26/3.10.0-327.el7.x86_64/x86_64/module/nvidia* /lib/modules/3.10.0-327.el7.x86_64/extra/ nvidia-smi # add environment value cat /environment export LANG=en_US.UTF-8 export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export PATH=/usr/local/anaconda3/bin:/usr/local/cuda/bin:$PATH # install tensorflow-gpu and keras and other modules can install by conda cat ~/.condarc channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mro/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ - defaults show_channel_urls: true conda install tensorflow-gpu==1.6.0 conda install keras-gpu conda install pytest pytest-html pytest-cov pydicom gevent numba autobahn pymongo redis rq txaio twisted conda install -c menpo opencv3 # install deepchem conda install -c deepchem -c rdkit -c conda-forge -c omnia deepchem-gpu=2.0.0 # install openslide and autobahn_autoreconnect etc. can only install by pip pip install openslide-python autobahn_autoreconnect wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz && tar xf libiconv-1.15.tar.gz && cd libiconv-1.15 ./configure && make -j 12 && make install ln -sv /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2 ldconfig cd .. && rm -rf libiconv-1.15 conda clean -a yum clean all exit 生成只读镜像 ...

June 21, 2017