유휴 트랜잭션

Today I Learned 날짜 2024년 11월 29일 금요일 내용 무한증식 커넥션 그저께, 커넥션 풀 문제가 생겨 한도를 늘려줘서 해결했다. 그런데 갑작스레 오늘 점심 쯤에 같은 오류가 발생했다. 그렇게 유저가 바글바글하지도 않은데 뭐지 싶어 RDS에서 커넥션 풀 그래프를 찾아봤다. 처음 50정도로 늘렸을 때 였다가 그저께 올리자마자 급격히 상승해서 유지됐다. 항상 연결이 많은걸로 보이는데, 피크타임도 없이 그렇다는게 뭔가 납득이 안됐다. RDS에서 어떤 경고(?)가 떠서 확인해보니 유휴 상태로 쓰이지 않는 트랜잭션이 너무 많이 유지되고 있다는 에러다. 유휴 상태는 데이터베이스에 접속해서 현재 유휴 상태인 트랜잭션을 확인했다. ...

2024년 11월 29일 · 3 분 · 배준수

print와 logging의 차이 : stdout buffer

Today I Learned 날짜 2024년 1월 31일 수요일 내용 logging과 print 문의 차이 : stdout buffer logging과 print의 차이에 대해 많이 찾아봤는데 디버깅을 위해선 logging문을 쓰는 것이 좋다는 의견이 대다수다. 사실 그냥 다 logging을 쓰라고 한다. 단순 출력이 아닌, 오류 메시지나 변수 내용, 위치 등을 다양하게 출력할 수 있으니 print가 쓰기는 편해도 전체 디버깅 작업의 속도를 높이는데는 logging이 훨씬 효과적이다. backgrountasks에서 print가 작동이 안되는 이유에 대해선 정확한 내용을 찾기 힘들었는데, stdout buffer가 원인이라는 얘기가 있다.stdout은 표준 출력 데이터를 의미한다. 반대로 stdin은 표준 입력(ex. 키보드) 데이터를 의미한다. 백준에서 알고리즘을 풀다보면 키보드 입력을 input() 이나 sys.stdin.readline() 으로 받곤 하는데 여기서 stdin이 나오는 걸 알 수있다. print 함수는 stdout을 사용하여 출력한다. print문이 콘솔창에 찍히는 것도 표준 출력으로서 나타나는 것. ...

2024년 1월 31일 · 3 분 · 배준수

PintOS Project1-1 WIL

PintOS Project1-1 Alarm Clock 구현 개요 기간 : 2023년 4월 20일 ~ 27일 주제 : Threads 과제 Alarm Clock Priority Scheduling Advanced Scheduler 배경지식 1. interrupt 기본 개념 CPU의 명령 수행속도에 비해 I.O(입출력) 연산의 속도는 훨씬 느리다. I.O 연산을 위해 CPU가 쉬면서 기다리는 것은 낭비다. I.O 연산 중에 CPU는 다른 일을 하고 있는다. I.O 연산 결과가 나오면 CPU에게 알린다. => “Interrupt” 정의 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요한 경우에 마이크로프로세서에서 알려 처리할 수 있도록 하는 것. 하드웨어 interrupt와 소프트웨어 interrutp로 나뉜다. trap이라고도 일컬어지며 프로세서에게 최근에 실행된 코드의 중단을 요청해서 event가 때맞은 방식으로 처리될 수 있도록 하는 것. 요청이 받아들여지면, 프로세서는 최근 활동을 중단시키고 state를 저장한 후 event를 처리하기 위해 interrupt handler(ISR, interrupt service routin)라고 불리는 함수를 실행한다. 종류 ...

2023년 4월 27일 · 8 분 · 배준수

PintOS Project1-2 WIL

Pintos Project 1-2 Priority Scheduling 구현 배경지식 1. Round Robin(RR) Scheduling 프로세스와 네트워크 스케쥴러에서 이뤄지는 알고리즘 중 하나이다. 일반적으로 time slice가 각 프로세스에서 동일한 부분만큼 순환하는 순서로 배당되어 모 프로세스들을 우선순위 없이 다룬다는 의미이다. 수행하기 간단하고 쉬우며 starvation-free(공평하게 모두 나눠가짐)가 특징이다. 2. Priority Donation(Priority Inheritance) unbounded inversion(끝없는 우선순위 도치)을 제거하기 위한 방법이다. 이 알고리즘은 우선순위가 가장 높은 프로세스 A가 있다고 가정한다면, A가 필요한 lock의 holder인 다른 프로세스의 우선순위를 A만큼 증가시키는 것이다. 그 결과 우선순위가 증가한 프로세스가 우선적으로 실행되고 hold한 lock을 release하면 프로세스 A가 실행될 수 있게 된다. 즉, A가 우선순위에 따라 가장 먼저 실행되기 위해서 필요한 것들(lock과 같은)을 확보하기 위해 다른 누군가에게 A 자신의 우선순위를 부여해 주는 것이다. ...

2023년 4월 27일 · 7 분 · 배준수

Pintos 1주차 컴퓨터 시스템 용어 정리

컴퓨터 시스템에 관한 용어 정리 1. Interrupt, interrupt handler trap이라고도 일컬어지는 interrupt는 프로세서에게 최근에 실행된 코드를 중단을 요청해서 event가 때맞은 방식으로 처리될 수 있도록 하는 것이다. 만약 요청이 받아들여지면, 프로세서는 최근 활동을 중단시키고 state를 저장한 후 event를 처리하기 위해 interrupt handler(ISR, interrupt service routine라고도 함)라고 불리는 함수를 실행한다. 이 개입은 보통 일시적이며 비록 interrupt가 치명적인(fatal) error를 표시하는 방법이 있을지라도, interrupt handler가 일을 마친 후 소프트웨어가 평범한 활동을 재개하도록 해준다. interrupt는 시간과 관련된 감지능력이 필요한 전기적, 물리적 상태 변화를 나타내기 위해 보통 하드웨어 장치에서 사용된다. 또한 공통적으로 실시간 컴퓨팅(real-time computing)같은 컴퓨터 멀티태스킹 수행에 사용된다. 그러한 방식들로 interrupt를 사용하는 시스템은 interrupt-driven이라고 일컬어진다. ...

2023년 4월 21일 · 5 분 · 배준수