[Linux][Kernel] 인터럽트(Interrupt) - request_threaded_irq 디버깅
By Guillermo Austin Kim | 2017년 12월 9일 |
irq_thread, request_threaded_irq 관련 데이터 구조와 코드에 대해서 이제 디버깅 좀 해볼까요? 실제 IRQ Descriptor 멤버들에 어떤 값들이 실려 있고 각 값들이 어떤 의미인지 정밀하게 파악하는 게 중요해요.이 값들로 며칠 야근할 껄 하루 몇 시간 디버깅으로 마무리할 수 있거든요. [1]: irq번호가 328[2]: 하드웨어적인 핀먹스 값이 13인가 보네요[3]. irq_data.state_use_accessors 값이 0x4002이네요 아주 중요한 정보를 담고 있으니 이 놈은 따로 분석 좀 해야 겠네요.[4]: kstat_irqs는 각 per-cpu 별로 얼마나 IRQ가 Trigger되었는지 카운트 값을 알 수 있어요.[5]: thread_fn으로 touch
한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(3: 제조업 마인드)
By Guillermo Austin Kim | 2018년 12월 27일 |
From한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(1) - SW문화한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(2: 쓰레기 관리자들) 한국 소프트웨어 업체에서 리눅스 고수가 나올 수 없는 또 다른 이유는 소프트웨어 업체를 제조업 마인드로 운영하기 때문이다. 제조업 마인드라. 이 용어에 대해서 조금 더 이야기를 해 보자.제조업 마인드는 원가 절감, 불량 감소를 통해 제품을 효율적으로 생산하는 체제를 의미한다. 이런 단어를 어디서 많이 쓸까? 공장이다. 공장에 가면 원가 절감 제로, 불량 감소란 캐치 프레이즈를 많이 볼 수 있다. 다른 관점으로 제조업 마인드에 대해 생각해보자.바로 생각나는 것은 시간을 많이 투입하면 그 만큼 더 많은 생산을 한다고 일을 바라 보는 관점이다.공장에
[Linux][Kernel]뮤텍스 데드락(Mutex Deadlock) 락업(lockup) - "simpleperf" 디버깅
By Guillermo Austin Kim | 2017년 12월 27일 |
특정 시점부터 갑자기 디바이스가 락업되는 현상이 리포트가 되었거든요. 엄청 쏟아 졌었는데요.이 때 어떻게 디버깅을 해서 문제를 해결했는지 업데이트하고자 해요. 락업이 된 상태에서 디바이스를 받아 강제로 코어 덤프를 뜬 다음에 콜 트레이스를 봤는데요.아래 콜 스택이 확인되었어요. 프로세스 이름은 "atd" 이에요. reboot 시스템콜을 trigger한 다음에 각 종 시스템 드라이버를 종료하는 과정에서 mutex lock을 계속 기다리는 현상이 확인되네요.-000|context_switch(inline)-000|__schedule()-001|schedule_preempt_disabled()-002|spin_lock(inline)-002|__mutex_lock_common(inline)-002|__mute
[bash: stat] 현재 파일이 전송되고 있는 중인지 판단하기 - 2
By 반달가면 | 2018년 7월 16일 |
예전에 파일이 마지막으로 수정된 시간이 언제인지를 확인해서 파일이 현재 전송중인지 판단하는 방법을 정리해 두었는데, 한가지 방법을 더 정리해 두기로. 두번째 방법은 일정 시간 동안 파일 크기가 변했는지 그대로인지를 보고 판단하는 것이다. 현재 파일 크기가 얼마인지 확인하고 이후 일정 시간, 예를 들어 10초 후에 파일 크기를 다시 확인해서 크기가 같은지를 비교한다. 만약 파일이 전송중이라면 10초후의 파일 크기는 좀 더 늘어나 있을 것이다. 파일 크기만 출력하려면 stat 명령에서 아래와 같이 하면 되겠다. -c 옵션으로 출력 형식을 지정해 주는데, 파일 크기는 %s이다. # my_file.txt 파일의 크기 확인 stat -c %s my_file.txt 시간차 기준을 10초로 하여