전체
-
Http 서버 부하 테스트CS/컴퓨터네트워크 2023. 10. 5. 17:44
오늘은 Http 서버의 부하 테스트(load test)를 해보려고 한다. 나는 테스팅 대상 서버로 저번 포스팅에서 구현했던 tcp_http_server를 이용하겠다. 테스트를 위한 도구로는, 오픈소스 로드 테스트 도구인 Locust를 사용할 것이다. 그 전에, Load test가 무엇인지부터 알고 들어가보자. Stress test / Load test stress test : 극한의 환경에서 시스템이 에러 컨트롤을 할 수 있는지 테스트하는 것 - 극한 조건에서 시스템의 동작을 모니터링 하기 위한 것이다. 스트레스 테스트는 압도적인 데이터나 리소스를 사용하여 테스트함으로써, 시스템을 '중단'시키려 한다. 에러 메세지, 시스템 복원 등을 측정한다. load test : 정상적인 작업 부하 조건에서 장치의 작..
-
DNS - Domain Name SystemCS/컴퓨터네트워크 2023. 10. 3. 21:07
DNS란? 컴퓨터들은 지들끼리 IP 주소를 이용해 서로를 구별하고 정보를 주고받지만, 사람은 이진수로 표시되는 IP주소를 기억하기 쉽지 않다. 그래서 식별할 수 있는 문자로 주소를 만들어 사용하는데, 이를 도메인(Domain)이라고 한다. 도메인은 '루트'라는 역트리 구조로 구성되어있는데, 루트 도메인 바로 아래 단계를 1단계 도메인, 그 아래를 2단계 도메인 이런식으로 부른다. 이렇게 도메인 이름이 계층적으로 이루어져 있는 체계를 DNS라고 하는 것이다! 위 그림을 보면 이해가 쉬울 것이다. 루트 도메인 아래에 com, edu, org 등 우리가 익히 들어본 도메인들이 있다. 이들이 바로 1단계 도메인, 혹은 최상위 도메인이 되는 것이다. 그 아래를 보면 fhda라는 이름의 도메인이 위치하고, 그 아래..
-
Bayesian ClassfierCS/ML 2023. 9. 28. 21:31
Bayesian Classfier란? Bayesian Classfier을 이용해서 우리가 하고자 하는 것은, 데이터 x가 주어졌을 때, 이 데이터가 '어느 클래스'에 속하는지 판단하는 것이다. 'x'는 데이터, 'wj'는 j번째 클래스를 나타낸다고 생각하고, 조건부확률 P(w1|x)d에 대해서 생각해보자. P(w1|x)는 데이터 x가 주어졌을 때, wj일 확률을 가리킨다. ->즉! P(w1|x)와 P(w2|x)의 값을 비교해서, P(w1|x) P(w2|x)라면 x는 클래스 1에 속한다고 판단할 수 있는 것이다. 이렇게 P(w1|x)를 구하기 위해, 고등학교때 배웠던 베이즈 룰을 활용한다. 각 항을 가리키는 용어부터 알아보겠다. P(wj | x) :..
-
소켓을 사용한 HTTP 서버 만들기 - 파이썬CS/컴퓨터네트워크 2023. 9. 26. 13:24
한 컴퓨터에서 다른 컴퓨터로 데이터를 보낸다면 어떤 과정을 거칠까? 들어가기 앞서 서로 다른 컴퓨터에서 정보를 주고받을 때 내부적으로 어떤 일이 발생할지 생각해보자. 보내는 쪽을 A, 받는쪽을 B라고 생각해보자. A의 '트랜스포트'계층은 A쪽 '어플리케이션'계층의 프로세스로부터 들어온 메세지를 전송계층의 패킷 (세그먼트)로 변환한다. 이렇게 변환한 세그먼트를 A의 '네트워크'계층으로 전달한다. A의 '네트워크' 계층은 이 세그먼트를 '데이터그램'안에 캡슐화 한다. ->여기까지가 A에서 일어난 일이다. 이 후 A의 네트워크 계층은 데이터그램을 B쪽으로 전달한다. (이 과정에서 라우터들을 거칠것이다). B의 네트워크 계층은 데이터그램에서 세그먼트를 추출하여 전송계층으로 전달한다. B의 전송계층에서는 받은 세..
-
Scheduling of Reactive Systems - Priority-Driven SchedulingCS/Real Time System 2023. 6. 14. 22:57
Priority-Driven Scheduling 내용에 들어가기 앞서, 스케줄링 조건에 대해 정의부터 하고 들어가자. 개념에 대한 이해가 쉬울 수 있도록, 최대한 단순하게 조건을 설정하자. - 싱글 프로세서를 사용한다. - 서로에 대해 독립적인 잡들로 구성된, 고정된 수 n개의 period task들에 대해 스케줄링 한다. - 이 잡들은 preemptive하며, 자기 스스로 중지되지 않는다. - aperiodic job과 sporadic job은 없다. - resource에 대한 고려는 하지 않는다. - 스케줄링 decision들은 release of a job 혹은 completion of job 시간에 결정된다. - 문맥 전환(context switch)에 따르는 오버헤드는 무시할만큼 작다고 가정한다..
-
Scheduling of Reactive SystemsCS/Real Time System 2023. 6. 13. 20:37
이 전 포스팅에서는 개별적인 잡들에 대한 스케줄을 다뤘다. 지금부터는 reactive system에 대한 스케줄링을 다뤄볼것이다. 이전에 task들의 종류에 대하여 다루었다.(Periodic, Aperiodic, Sporadic) 이런 task들의 대한 스케줄링은 개별적인 잡들의 스케줄링과는 다른 방법으로 접근해야한다. Periodic Tasks periodic task Ti는 일정한 간격을 두고 주기적으로 발생하는, 일정한 execution time과 relative deadline을 가진 잡들의 집합으로 볼 수 있다. Phase ϕi : Task Ti의 첫 번째 잡인 Ji,1의 release time ri,1. 즉 가장 처음 실행되어야 하는 잡이 등장하는 시간이다. Period pi : Task Ti..
-
Ball Partitioning MethodsCS/SimilaritySearch 2023. 6. 1. 17:56
영역 분할을 하는데 사용하는 기존의 접근 방식에 대해 조사해보았다. 첫 번째로, Ball Partitioning에 대한 방법들을 알아보자. Burkhard-Keller Tree (BKT) BKT라고도 불린다. 특징으로는 다음 4가지가 있다. - Applicable to discrete distance functions only : 이산적인 거리만 적용할 수 있다. 연속적인 거리는 안된다는 말. - Recursively divides a given dataset X : 재귀적으로 주어진 데이터셋 X를 분할한다. 나머지 두 특징은 특수기호가 포함되어있어 이미지로 대체하였다. 위의 두 특징을 해석하자면, 임의의 점 pj로 부터 같은 거리에 위치한 점들을 Xi로 묶어 pj의 서브트리에 저장한다는 얘기이다. BK..
-
Tree Quality MeasuresCS/SimilaritySearch 2023. 6. 1. 01:01
트리의 품질 측정 예전에 배운 가상 index에 대해 생각해보면, 우리는 같은 데이터셋을 가지고도 서로 다른 트리를 생성할 수 있다. 아래의 그림과 같이, 똑같은 데이터셋을 다른 tree structure로 구성할 수 있는 것이다. 우리는 이렇게 빌드할 수 있는 서로 다른 트리에 대하여, 어떤 트리가 더 품질이 좋은지 평가할 수 있다. 첫 번째 트리는 영역간에 겹치는 부분이 없고, 트리의 리프 노드의 점유율이 높다. 따라서 더 컴팩트한 트리라 할 수 있다. 반면에 두 번째 트리는 영역간의 중복이 많고, 트리의 리프 노드의 점유율이 좋지 않다. 따라서 첫 번째 트리에 비해 컴팩트하지 않다. 우리는 첫 번째 트리가 더 양질의 트리로 취급힌다. 이런 식으로, 트리의 품질을 측정하는 측도에 대해 알아보자. 가장..