커널
-
Linux I/O 스케줄러(cfq, deadline, noop)커널(Kernel) 2022. 12. 26. 21:14
환경 정보 OS: ubuntu18.04 I/O 발생 흐름 1. 사용자는 읽기나 쓰기를 통해서 I/O를 발생시킨다. 2. 발생한 I/O는 가상 파일 시스템이나 로컬 파일시스템 경로를 거친다. 3. 파일 시스템을 거친 I/O는 I/O 스케줄러를 통해 가공되고(병합, 정렬) 언제 블록 디바이스에 접근할지 정해진다. 4. 블록 디바이스에 접근해서 데이터를 읽거나 쓴다. I/O 스케줄러가 필요한 이유 우리가 사용하는 디스크는 크게 HDD와 SSD가 있다. HDD의 경우, 디스크 헤더를 움직여 데이터가 저장되어 있는 섹션에서 데이터를 읽거나 쓴다. 여러 데이터를 읽거나 쓰기 위해 헤더를 이리저리 움직이는 것은 시간을 많이 사용하게 되고, 결국은 성능 저하를 만든다. 마찬가지로 SSD 또한 한 번에 읽을 수 있는 데..
-
Linux TCP Keepalive 정리커널(Kernel) 2022. 12. 11. 22:33
환경 정보 OS: ubuntu18.04 TCP Keepalive 종단 간 커넥션을 만들기 위해서는 TCP 맺음/ 끊기가 필요하다. 하지만 통신할 때마다 TCP 연결을 맺고 끊는 방식은 비효율적이기 때문에, 만들어진 세션을 계속 사용함으로써 자원을 아끼고 애플리케이션 응답속도를 향상시킬 수 있다. 이렇게 세션을 유지하는 방법이 keepalive이다. keepalive는 클라이언트와 서버 둘 다 사용할 수 있으며, 둘 중 하나라도 있으면 세션은 유지된다. keepalive로 커넥션을 맺게 되면, 서로가 살아 있는지 확인하기 위해 아주 작은 패킷 하나를 보내는데, 둘 중 하나에서만 보내도 충분하기 때문에 keepalive를 사용하기 유리한 쪽에서 보내 세션을 유지한다. keeplialive를 사용 중인 소켓은..
-
Linux NUMA 아키텍처 정리커널(Kernel) 2022. 12. 5. 19:22
환경 정보 OS: ubuntu18.04 NUMA 아키텍처 NUMA는 Non-Uniform Memory Access의 약자로 불균형 메모리 접근을 의미한다. 불균형 메모리 접근이란 멀티 프로세서 환경에서 동시에 메모리 접근이 가능한 것을 말한다. 예를 들어, 0번 소켓 CPU에서 로컬 메모리에 접근, 1번 소켓 CPU에서 로컬 메모리에 접근이 동시에 일어날 수 있다. NUMA가 있기 전의 UMA 아키텍처의 경우 버스를 공유해서 사용했기 때문에 메모리에 동시 접근이 불가능했다. 참고 1. 노드(Node) - CPU와 CPU에 연결된 메모리를 노드라 한다. 2. 로컬 액세스(Local access) - 자신의 노드 안에서 메모리 접근을 로컬 액세스라 한다. 3. 리모트 엑세스(Remote Access) - 다..
-
Linux 시스템 정보 확인하기(BIOS/CPU/Memory/DISK/NIC)커널(Kernel) 2022. 11. 21. 00:52
환경 정보 OS: ubuntu18.04 Bios 정보 확인하기 dmidecode 커맨드를 사용하면 시스템 컴포넌트의 정보를 쉽게 확인할 수 있다. 다음은 -t bios 인자를 주어 이 시스템의 BIOS를 확인한 것이다. 이 시스템은 American Megatrends Inc 에서 만든 서버이며, bios의 버전이 2019/08/13에 발표된 F2임을 알 수 있다. 시스템 정보 확인하기 주로 이 커맨드를 가장 많이 사용한다고 한다. 이 장비는 Gigabyte Technology Co.에서 만든 B365M D3H 모델이라는 것을 확인할 수 있다. CPU 정보 확인하기 -t processor를 인자로 주면 CPU 정보 확인이 가능하다. 여기서 소켓이라는 말이 나오는데, 소켓은 물리적인 CPU를 의미하며 소켓은..
-
머신러닝: SVM이란? Linear classifiers, Dual form 공부하기!머신러닝 2020. 9. 14. 21:16
SVM이란? SVM이 무엇인지 알아보기 위해 다음과 같은 예를 먼저 들어보자 가로세로 축이 무게와 속도이고, 검은점은 거북이, 흰점은 토끼라 하자 거북이와 토끼의 그룹을 직선하나로 나누고 싶다. (이과정을 dicision plane을 찾는다고 한다) 하지만 이 그룹을 나눌 수 있는 직선은 수 없이 많고 어떤 직선이 최적의 직선인지 알고 싶다. 여기서 최적의 직선을 구하는 방법이 바로 SVM이다. 최적의 직선을 구하기 위해서 기준을 먼저 정해야 한다. 우선 margin이라는 것을 생각해보자 margin = 직선에서 가장 가까운 점(Data point)까지의 거리 그렇다면 이러한 margin이 최대가 되게 하는 직선을 찾는다면 기준을 만족하는 직선들 중에서 최적의 직선을 찾을 수 있게 된다. 위 조건을 만족..