Linux Tips

Command Line Interface 에서 User 추가 / 삭제

sudo useradd -m -s /bin/bash [username] # user 생성, 홈디렉터리 생성, 기본 쉘을 bash로 설정

sudo passwd [username] # password 변경


sudo userdel -r [username] # user 삭제

ufw를 이용한 방화벽 설정

sudo apt install ufw

sudo ufw default deny incoming

sudo ufw allow [Port]/[Protocol]

sudo ufw allow 

sudo ufw enable

sudo ufw status verbose

Port는 서비스에 필요한 포트를 열면 된다. 예를들어 ssh 서비스에 22번 포트를 할당해 놓았다면

sudo ufw allow 22/tcp

와 같이 작성한다.

특정 네트워크 인터페이스에서 특정 포트의 연결을 허용하고 싶다면 다음과 같이 작성할 수 있다

sudo ufw allow in on eth2 to any port 22 

기본적으로 보안을 위해 모든 접속을 차단하는 것을 권장하며, 학교외부접속을 위해서는 학교 정보통신처에 신청이 필요하다.

병렬계산시스템의 경우 ufw 설정을 잘못할 경우 컴퓨트 노드들의 부팅이 불가능하다. 내부망용 이더넷에 ssh와 NFS를 허용하는 방향으로 사용할 수 있다.

Linux system에서의 Load test


필요 패키지 : stress


설치

debian 계열 : 터미널에서 apt install stress 명령 실행(관리자권한)

Redhat 계열 : 터미널에서 yum install stress 명령 실행(관리자권한)


사용법

stress -c (사용할 코어수) --vm (메모리 테스트에 사용할 프로세스 수) --vm-bytes (용량)M --hdd (사용할 디스크의 번호) --hdd-bytes (용량) --timeout (시간)


예시

1) ALiS 마스터 노드에 사용하는 경우

stress -c 8 --vm 4 --vmbytes 4096M -hdd 1 - -hdd-bytes 1G --timeout 1h

: 8개의 CPU에 4개의 프로세스로 4096MB의 메모리부하 및 HDD 1번에 대해 1GB 용량의 IO부하테스트를 1시간 동안 진행


2) ALiS 컴퓨트 노드에 사용하는 경우

stress -c 8 --vm 4 --vmbytes 8192M --timeout 7h

: 8개의 CPU에 4개의 프로세스로 8192MB (8GB)의 메모리 부하를 7시간 동안 진행


3) SFTP 서버에 사용하는 경우

stress -c 4 --vm 4 --vmbytes 2048M --hdd 1 --hdd-bytes 10G --timeout 60s

: 4개의 CPU에 4개의 프로세스로 2048MB(2GB)의 메모리 부하 및 HDD 1번에 10GB의 IO부하테스트를 60초 동안 진행


이때 문제가 발생하는 경우 설정에 잘못된 값이 있는 것이므로 설정을 변경해야 함

일반적으로는 메모리 부하를 너무 과하게 주는 경우 실행이 정상적으로 진행되지 않음.

Single Compute Node에서의 작업 분할

Single Computer 에서 작업을 진행하는 경우, 많은 코어수를 나누어 활용하려면 작업 스케쥴링이 필요하다.

프로그램 작성단계에서 진행 가능하면 좋으나 그정도 프로그래밍이 가능한 인원이 없으므로 수동으로 작업을 나누어준다.


배포본에 따라

Redhat / CentOS / SUSE 계열

$ sudo yum -y install tmux


Debian / Ubuntu 계열

$sudo apt install -y tmux


2. taskset

taskset은 대부분의 리눅스 배포본에서 기본으로 지원하는 작업 스케쥴러이다.

CPU의 갯수가 4개라고 하면

$ taskset -c 0,1,2,3 [command]

로 4개 코어(스레드)에 작업 할당이 가능함


3. tmux와 taskset 동시 활용

tmux를 실행하면 다중 터미널을 사용할 수 있음.


복수개의 터미널에서 8코어 시스템을 사용한다고 가정하면

$ taskset -c 0-3 [command1]                 |  $ taskset -c 4-7 [command2] 


와 같은 형태로 명령을 내리면 8개 코어를 가진 CPU에서 각각 4개의 CPU씩으로 작업을 분할해서 실행이 가능함.


*** taskset -c 0-2 [command] 와 같이 반드시 짝수개의 코어를 사용하지 않아도 사용해도 됨.

MPB, harminv 설치

# apt install mpb harminv

Compute node에 설치해야 할 경우 chroot /srv/nfs 를 수행한 뒤 한번 더 설치한다. 

병렬로 mpb를 실행해야 하는 경우 다음과 같이 설치 후 실행한다.

# apt install mpb-mpi mpich

$ mpirun -np 4 mpb-mpi 2D_slab.ctl 

dex 를 이용해 노드 전체에 계산을 뿌리고 싶다면 다음과 같이 해본다.

$ dex %h '1 0.1 3' 'mpirun -np 4 mpb-mpi h=%h rods.ctl >& rods_h%h.out'