2019/04
-
할당한 메모리가 working set에 잡히지 않던 현상프로그래밍/의문 2019. 4. 23. 23:32
내가 만든 서버를 띄우고 윈도우 작업 관리자에서 메모리 점유율을 확인하니 할당한 메모리에 비해 턱없이 적은 메모리가 잡히고 있었다. 적어도 1gb는 잡혔어야 했는데 약 180mb만 잡혔던 것이다. 할당이 안 되고 있던 건가 했는데 그건 아니었고, 혹시나 해서 Virtual memory size를 확인해보니 거기에는 잡혀있더라. 메모리 엑세스가 되지 않아서 그런 걸까? 그럼 억지로 메모리를 엑세스 해 Working set으로 올라가지 않을까? 라는 생각에 memset을 이용해 할당한 메모리에 접근하도록 해봤다. // 테스트를 위한 메모리 강제 접근 memset(recvbuf.ptr(), 0, recvbuf.size()); memset(sendbuf.ptr(), 0, sendbuf.size()); 그러자 실..
-
-
boost asio 사용 시 win32 버전을 지정하지 않으면 io_context::run이 빠져나가는 현상프로그래밍/의문 2019. 4. 14. 04:09
asio를 이용해 tcp 서버를 만들었는데 async_accept 이벤트가 등록되어있음에도 io_context::run을 벗어났다. _WIN32_WINNT에 타겟 윈도우 버전을 지정하니 벗어나는 현상이 없어졌다.(_WIN32_WINNT=_WIN32_WINNT_WIN10) 추가적인 확인 필요 발생한 상황 서버는 최대 세션이 10개 받아지도록 되어있다. 세션이 끊어지면 소켓을 닫고 닫힌 소켓에 async_accept를 걸도록 되어있다. 클라이언트는 100개의 세션을 동시에 연결하고 동시에 연결을 끊는다. 서버는 다시 async_accept를 걸었다는 로그가 찍혀있지만 아무 에러 없이 io_context::run이 빠져나갔다. 다음과 같은 상황에선 발생하지 않았다. 위 상황에서 서버는 최대 세션이 110개 받..
-
-
CRITICAL_SECTION의 default spin count프로그래밍/의문 2019. 4. 10. 01:24
CRITICAL_SECTION cs; InitializeCriticalSection(&cs); DWORD prevSpinCount = SetCriticalSectionSpinCount(&cs, 1000); SetCriticalSectionSpinCount는 파라미터인 CriticalSection의 SpinCount를 수정하고, 이전의 SpinCount 값을 반환한다. https://docs.microsoft.com/ko-kr/windows/desktop/api/synchapi/nf-synchapi-setcriticalsectionspincount SetCriticalSectionSpinCount function (synchapi.h) Sets the spin count for the specified c..
-
터미널(콘솔) 출력 메세지들 파일에 저장하기프로그래밍 2019. 4. 6. 23:42
c, c++이라면 printf, std::cout, c#이라면 Console.WriteLine, python이라면 print 등 터미널에 쓰여질 출력들을 별다른 작업 없이 파일에 저장할 수 있다. 터미널(콘솔)에서 다음과 같이 하면 된다. 출력을 리디렉션 한다. 모든 출력을 특정 파일에 쓰기(write) 커맨드 > 파일경로 ./client.exe > ./file.txt 모든 출력을 특정 파일에 추가하기(append) 커맨드 >> 파일경로 ./client.exe >> ./file.txt 참고 https://askubuntu.com/questions/420981/how-do-i-save-terminal-output-to-a-file https://linuxize.com/post/linux-tee-command/