koodev

macOS 키보드에서 이상한 문자만 입력될 때 (åß∂ƒ...)

Computer

사용 중인 맥북(16인치, M1pro)에서 키보드 타이핑 시 이상한 문자가 입력되는 현상이 발생했다. 좀 더 정확히는 오른쪽 option 키가 항상 눌려진 것처럼 타이핑이 되고 있었다. 즉, asdf 를 입력하면 åß∂ƒ 가 입력된다. 또한 마우스 커서와 관련된 다른 동작도 오른쪽 option 키가 눌려진 영향을 받았다.

처음에는 입력기 오류인가 해서 System Preferences - Keyboard - Input Sources 를 확인해 보았는데 정상이었고, 재부팅을 해 보았는데도 그 현상은 사라지지 않고 있었다. 성급한 마음에 재부팅을 하게 되면 더 곤란한 경우가 생기는데 영어입력이 안 되어서 로그인이 안 되기 때문이다. 본인처럼 재부팅을 먼저 했을 경우에는 다시 재부팅한 다음 Magic Key 를 입력하여 현상을 해결할 수 있다. 위의 링크 설명처럼 PC를 종료시킨 다음 다시 켤 때 CMD + Option + P + R 키를 눌러서 부팅하면 현상이 해결된다.

https://discussions.apple.com/thread/3065163

원인은 불명확하지만 하드웨어 또는 시스템적으로 오른쪽 option 키가 눌려진 상태가 유지되고 있는 것인데 인터넷 검색을 통해 재부팅 없이 이를 해결하는 방법을 찾을 수 있었다.

https://discussions.apple.com/thread/4815782

System Preferences - Accessibility - Keyboard 로 이동한다. "Enable Sticky Keys" 를 체크한다. 그 다음 문제가 되는 오른쪽 option 키를 두 번 누른다. 그러면 화면 우측 상단에 해당 키가 고정(또는 고정해제) 되었다고 표시된다. 고정된 경우 짙게, 해제된 경우 흐리게 표시되는데, Sticky Key 가 해제된 상태로 만든다. 그리고 "Enable Sticky Keys" 체크를 해제하면 된다.

TCMalloc 사용하여 TF 메모리 누수 방지

Programming

Tensorflow 사용시 메모리 누수가 발생하는 경우가 있어 오랬동안 고생하다 최근에 찾은 솔루션을 정리한다. 방법은 시스템 malloc 을 TCMalloc 으로 교체하는 것이다.

일부 시스템에서의 malloc 이 Tensorflow 와 함께 사용될 경우 반복적인 시스템 메모리에 접근하는 상황에서 메모리 회수가 잘 안되는 것 같다. 내 경우엔 다른 머신간에 다른 양상이 나타났는데, ① 메모리 누수가 안 발생, ② 시스템 메모리가 꽉 차서 해당 프로세스 kill, ③ 시스템 메모리가 꽉 차서 PC 먹통 등으로 나타났다(3번 경우 때문에 재택근무 중 사무실 출근이 필요했음).

시스템 malloc 을 TCMalloc 으로 간단하게 대체하기 위해서 LD_PRELOAD 트릭을 사용한다. LD_PRELOAD 는 환경변수로 넣어주는데, 프로그램이 로드되기 직전에 LD_PRELOAD 로 지정한 공유 라이브러리를 먼저 로드한다. 이렇게 함으로써 해당 라이브러리 심볼이 우선권을 갖게 된다. TCMalloc 이 정의된 공유라이브러리를 지정하면 실행하는 프로그램에서 malloc 이 호출되는 부분이 TCMalloc 으로 대체되는(override) 것이다.

우선 타겟 환경(도커 등)에 TCMalloc 을 설치한다.

$ apt install libtcmalloc-minimal4

그리고 타겟 환경에서 아래 명령어를 사용하여 libtcmalloc-minimal4.so.4 의 경로를 확인한다.

$ dpkg -L libtcmalloc-minimal4

그리고 타겟 환경에서 명령어를 실행할 때 LD_PRELOAD 환경변수를 지정해주면 된다.

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 train.py

내 경우에 메모리 누수현상은 사라졌지만 실행속도에서 큰 개선을 확인할 수는 없었다.

이 방법은 시스템 메모리 접근에 관련한 것이기 때문에 코드 자체를 tf.Function 으로 만 사용할 경우 누수 이슈가 안 나타날 수 있고 성능개선도 기대할 수 있을 것 같다. 내 경우에는 데이터셋 루프에서 시스템(cpu) 메모리로 가져와서 처리해야 편한 부분이 있어 이 방법이 현실적이고 빠른 해결책이다.

참고

ubuntu18.04 login screen 에서 마우스, 키보드가 동작안할때

Computer

오랬만에 사무실에 출근해서 PC를 켰는데 마우스랑 키보드가 동작하지 않았다. 배터리를 갈아봐도, 유선키보드를 연결해도 동작을 하지 않았다. sudo evtest 로 이벤트를 모니터링해 봤는데, 이벤트는 잘 받고 있는 상황. 인터넷 검색을 해 보니 X-server 모듈에 문제가 있는 것 같다고 한다. 해결 방법은 아래와 같이 xserver-xorg-input-all 패키지를 설치해 주면 된다.

$ sudo apt install xserver-xorg-input-all

참고: https://askubuntu.com/questions/1135717/ubuntu-18-04-keyboard-and-mouse-not-working-at-login-screen