이전에는 프로메테우스에 대해서 살펴보았다. 이번에는 node-exporter를 사용해서 리눅스 기반 운영체제를 모니터링 대시보드를 구축하는 방법에 대해서 살펴볼 것이다. 위 사진에 따라 exporter -> prometheus -> grafana의 순서대로 데이터가 흘러가는 구조를 설계할 예정이다. docker-compose 환경을 사용해서 대시보드를 띄울 것이다. 일반적으로 쿠버네티스를 사용하는 환경이라면 좀 더 다양한 exporter를 사용할 수 있겠지만, 이번 포스팅에서는 node-exporter를 이용해서 본인의 컴퓨터를 모니터링하는 대시보드를 소개하고자 한다. 더 나아가서 node-exporter이기 때문에, 다른 노드들을 추가할 수 있는 방법까지 다뤄보고자 한다. 본론먼저 전체 소스 코드의 링..
서버 개발자로서 꽤나 긴 시간동안 코딩을 하면서 지내고 있을 무렵, CPU 및 GPU 등 다양한 데이터를 수집하는 아키텍처를 구현해야할 일이 생겼다. slurm이라는 리눅스 노드들을 클러스터링하는 툴을 쓰고 있는 상황이었고, 어떻게 모니터링 할 수 있을 지 고민하기 시작했다. HPC managing하는 과정에서 결국 시계열 데이터를 수집하는 방법을 쓰기로 했고 그러한 과정에서 프로메테우스를 열심히 공부하기 시작했다. 마스터 노드가 셋, 워커 노드가 백 개에 달하는 시스템에서 CPU 및 GPU를 모니터링하는 작업을 수행하는 아키텍처를 구현하고 있을 때, 가장 먼저 떠오른 것은 뭔가 queue를 두고 node에서 데이터들을 쏘아보내는 곳이 있어야 하지 않을까? 하는 고민이었다. 메시지 큐를 써야 하나 생각하..
학교에서 HPC(High Performance Computer)를 관리하는 일을 하면서, 여러 난관에 봉착하게 되었다. 가장 신경 쓰였던 점은 사용자들에게 리눅스 기반의 접근을 제공하는데, 모든 사용자들을 커버할 수 없다는 점이다. 예를 들어 pytorch나 tensorflow 기반 사용자들을 고려하여 관련 모듈은 내부적으로 설치가 끝난 상황이지만, 다른 프로그램을 돌리는 사람이 몇몇 있다! 그러한 케이스의 사용자들을 커버하기 위해서 추가한 것은 바로 이 enroot라는 명령어이다. 이는 NVIDA에서 만든 툴로써 권한이 없는 상황에서도 docker image를 기반으로 컨테이너 혹은 OS를 만드는 데, 도움을 주는 sandbox 툴이다. 무엇보다 이름 그대로 enroot 즉, root를 만들어 준다는 ..
ssh 연결이란 무엇일까? 간단하게 생각한다면 22번 포트로 원격 접속을 하는 것? 간단하게 클라우드 서비스를 사용할 때까지만 해도 22번 포트로 원격 접속을 하는구나 정도로 알고 있었지만 linux 환경에서 사용자에게 컴퓨팅 리소스를 제공하는 서비스를 하기 시작하면서 ssh에 대해 깊은 이해를 전달하고자 포스팅을 작성한다. 처음에 ssh 연결이 생각했던 것과는 다르게 동작하는 것을 보면서 호기심이 점점 생겼다. 지금 일하는 곳에서 linux를 굉장히 하드하게 쓰게 되다보니 ssh에 대해서 자세히 공부해야할 때가 있었는데, 관련해서 ssh가 뭔지 깊게 정리해서 포스팅하면 좋을 것 같아 글을 쓰게 되었다. 본론SSH(Secure Shell)은 네트워크 연결을 통해서 다른 컴퓨터에 연결하거나 로그인하거나 명..
알고리즘을 통해서어떻게 매칭을 구현할 수 있을까? 남자와 여자 각각 원하는 상대방의 리스트를 가지고 있다고 하자. 이를 어떻게 매칭시켜야 가장 뒷말이 안 나오는 매칭을 구현할 수 있을까? 이러한 문제를 안정 결혼 문제(Stable Marriage Problem)이라고 부른다. SMP의 목표는 모든 매칭이 안정적이게끔 하는 것이다. 여기서 '안정적'이라는 것은 어떤 두 사람이 현재의 매칭 상태보다 서로 더 선호하는 경우가 없다는 것을 의미한다. 구체적으로는 어떤 남성 M과 여성 W가 서로의 현재 파트너보다 더 선호하는 경우가 없는 상태를 의미한다. 즉, 모든 구성원들이 현재의 매칭 상태를 바꾸고 싶어하지 않도록 만드는 것이 목표다. 백준 문제 풀이 사이트에서 해당 문제에 대한 레퍼런스를 가져오면 다음과 같..
해설gale-shapley 알고리즘을 기반으로 하고 있으나 쌍이 주어지지 않는다. 중요한 포인트는 다음 부분이다. 즉 선호도 테스트 케이스가 다음과 같이 주어지면51 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 5 카이스트 학생들의 선호도는 다음과 같이 나와야 한다. 5 4 3 2 15 4 1 3 21 5 2 4 31 2 3 5 41 2 3 4 5 따라서, 저 조건에 맞에 카이스트 학생들의 선호도를 만들어준 후 gale-shapley 알고리즘을 사용하면 풀 수 있다. 필자는 다음과 같이 구현했다.for i in range(1, n+1): temp = [i] for dist in range(1,n): for j in range(n, 0, -1): ..
해설gale-shapley 알고리즘을 통해 풀이할 수 있다. 파이썬 코드는 아래와 같다.코드import sysinput = sys.stdin.readlinen = int(input())men = input().split()women = input().split()men_prefs, women_prefs = {}, {}for pivot in (men_prefs, women_prefs): for _ in range(n): people = input().split() pivot[people[0]] = people[1:]def stable_marriage(men_prefs, women_prefs): men = list(men_prefs.keys()) women = lis..
해설gale-shapley 알고리즘을 통해 풀이할 수 있다.코드import sysinput = sys.stdin.readlineN = int(input())men_pref, women_pref = [], []for pivot in (men_pref, women_pref): for _ in range(N): pivot.append(list(map(int, input().split())))def stable_marriage(men_preferences, women_preferences): n = len(men_preferences) free_men = list(range(n)) women_partners = [None] * n men_next_proposal = [0..