210820 FUNDAMENTAL 25. 컴퓨터 파워

문소정·2021년 8월 20일
0

AIFFEL

목록 보기
33/66

1. 멀티태스킹

  • 다수의 작업(혹은 프로세스, 이하 태스크)이 중앙 처리 장치(이하 CPU)와 같은 공용자원을 나누어 사용하는 것(출처 : 위키피디아)
  • 컴퓨팅 자원을 최적화하는 방법
    • ex) 병렬 컴퓨팅, 분산 컴퓨팅 등
  • 멀티태스팅의 동작 방식 2가지
    • 동시성(Concurrency) : 하나의 processor가 여러 가지 task를 동시에 수행
      • 동기(Synchronous) : 앞 작업이 종료되기를 무조건 기다렸다가 다음 작업을 수행하는 것(요청에 지연이 발생하더라도 계속 대기)
      • 비동기(Asynchronous) : 기다리는 동안 다른 일을 처리하는 것
    • 병렬성(Parallelism) : 유사한 task를 여러 processor가 동시에 수행하는 것
  • 속도 제한이 걸리는 2가지 경우
    • I/O 바운드 : 입력과 출력에서의 데이터(파일)처리에 시간이 소요될 때
    • CPU 바운드 : 복잡한 수식 계산이나 그래픽 작업과 같은 엄청난 계산이 필요할 때

      어떤 일을 바로 하지 못하고 대기해야 하는 일 : "바운드(bound) 되었다"라고 표현

1) Process, Thread, Profiling

  • Process : 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
    • 참조 : 터미널로 배우는 리눅스 운영체제(10. 리눅스 기반 운영체제 (2) 프로세스 관리와 시스템 콜)
  • Thread : 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
  • Profiling : 애플리케이션에서 가장 자원이 집중되는 지점을 정밀하게 찾아내는 기법
    • ex) profile 모듈, cProfile 모듈, line_profile 패키지

2) Scale Up vs Scale Out

  • 컴퓨터 자원 Up : 업그레이드, 최적화
  • 컴퓨터 자원 Out : 확장
  • Scale-Up : 한 대의 컴퓨터의 성능을 최적화하는 방법
  • Scale-Out : 여러 대의 컴퓨터를 한 대처럼 사용하는 것
Scale-UpScale-Out
그림
정의단일 서버(하드웨어)의 성능을 증가시켜서 더 많은 요청을 처리하는 방법동일한 사양의 새로운 서버를 추가하여 성능을 증가시키는 방법
장점1.데이터 정합성 이슈에서 자유로움
2. 별도의 소프트웨어 라이선스 추가 비용 없음
3. 구현이 쉬움
1. 가용성을 높임
2. 확장에 유연함
3. 병목현상을 줄임
단점1. 설치 가능한 CPU, 메모리, 디스크 수의 제한
2. 일정 수준이 넘어가는 순간 성능 증가 폭이 미미
3. 성능 증가 대비 업그레이드 비용이 비쌈
4. 서버 한 대가 모든 클라이언트의 트래픽을 감당함
1. 소프트웨어 라이선스 비용이 증가
⇨ 오픈소스 활용시 비용 절약 가능
2. 데이터 불일치가 잠재적으로 발생

0개의 댓글