10월, 2021의 게시물 표시

WSL2 메모리 과다 사용 문제

이미지
WSL2 위에서 컴파일을 하다보니 어느새 메모리를 풀로 사용하고 있더군요. 제 업무 PC 메모리 8기가에 불과하다보니 다음 구매시 8기가 하나 더 사달라고 졸라야겠다고만 생각했습니다만, 프로그램 서너개만 띄워놓고 컴파일도 안하는데 뭐 이리 버벅거리지? 싶어서 살펴봤습니다.  Vmmem 이라는 프로세스가 6기가 가까이 쓰고 있더라구요. 구글신께 물어보니 친절하게 답변해주셔서 해결했습니다. C:\Users\<사용자이름>\.wslconfig 파일을 하나 만들어서 아래 내용 입력 [wsl2] memory=3GB swap=0 파워쉘 열어서 # 현재 실행중인 배포판 확인 wsl -l --running # WSL 2 해당 배포판 종료 wsl -t Ubuntu-20.04 좀 기다리니 Vmmem 이 사라지더군요! 다시 WSL2 배포판 실행했더니 오래 사용해도 3기가 이상 올라가지 않습니다. 추가내용 swap 을 0으로 하면 다 좋은데 메모리를 다 쓰면 멈춥니다. 메모리 정리가 될때까지 freeze 됩니다. ㅠㅠ 차라리 swap 메모리를 넉넉히 잡으세요. 그러니까 오히려 해결되는군요. 물론 가장 좋은 방법은 메모리를 충분히 많이 꼽는겁니다.

make 로그를 파일에 기록하면서 화면에 출력하기. Shell 명령어 tee

요약 make 로그를 파일에 기록하면서 화면에 출력하려면 아래 명령을 실행하면 됩니다. make 2>&1 | tee -a make.log Situation 큰 프로젝트를 컴파일 하는데 컴파일 로그를 분석해야했습니다. 로그가 엄청난 양이 발생하니 파일로 기록해야 분석할 수 있었고, 컴파일 진행상황도 알아야하니 화면으로 출력도 해야했습니다. Task make 출력 로그를 기록 기존의 화면 출력 로그 유지 Action 스크립트 한줄이지만, 알아야할 개념이 이렇습니다. Redirect and Pipe 표준 입출력 : stdin, stdout, stderr tee 각각의 개념에 대해 블로깅을 하게 되면 링크를 달기로 하고, 이번에는 make의 출력과 tee 사용법에 대해서 말씀드리도록 하겠습니다. make 일단 make를 하면 컴파일 로그들이 출력됩니다.  $ make ccache g++ -std=c++11 -Wall main.cpp -oleetcode -lgtest -lpthread main.cpp: In member function ‘std::string Solution::longestPalindrome(std::string)’: make 출력후 나오는 로그가 같은 로그(?)가 아닙니다. ccache로 시작하는 로그는 stdout, 이탤릭체는 stderr입니다.  그래서 make > build.log 를 하면 stdout 만 build.log에 기록되는 것입니다. stderr 을 stdout 으로 보내면 해결되겠죠? make 2>&1 > build.log tee 명령어 사용법 위의 명령을 실행하면 문제가 stdout을 build.log에 리다이렉트하므로 화면에 출력하는 내용이 없습니다. make 현재 상황을 알 수 없는거지요. 이때 필요한 명령이 tee입니다. $ make stdin -> tee -> stdout         ...

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

리눅스 멀티코어를 사용하는 tar 압축/해제

WSL에 X-Window로 Terminator 설치하고 Minicom까지