2018년 11월 16일 금요일

컴퓨터의 이상한 증상 - 고장의 과정?

글을 시작하기 전에 몇가지 핵심적인 단어를 포함하는, 간단한 문장의 결론부터 밝히고 시작을 하겠다.


* 오래된 컴퓨터에서 하드디스크에 이상이 발생하기 시작했다.
 - 하드디스크의 속도가 현저히 느려지기 시작한 것.
 - 이대로 두면 하드디스크의 데이터를 모두 잃게 되리라 생각했고
 - 새 하드디스크를 구입해서 새 OS를 설치했다. (Windows 7)
* 그리고 사용한지 2달 정도 되었다.
* 사용 중에 네트워크가 끊기는 현상이 가끔 발생하더니 빈도가 차츰 많아졌다.
* 이벤트 뷰어를 보니 네트워크 칩의 오류가 기록되어 이었다.
* 뿐만 아니라 디스크 콘트롤러에서도 오류가 발생하는 것을 확인했다.
* 디스크 포트를 변경하는 것으로 문제가 상당히 완화 되었다.
* 하지만 여전히 발생한다.
* 혹시나 Windows 7의 문제일까 의심했다.
 - 그리고 새 하드디스크의 성능을 시험하고, 맛이 가려던 하드디스크를 함께 시험했다.
 - 문제는 SATA 포트에 있었고 하드디스크에는 문제가 없었다.
* 예전의 하드디스크, 예전의 OS (Windows XP), 단지 SATA 포트만 바꾸어 옛날로 돌아갔다.
* 예전의 상황에서도 네트워크 끊어짐의 현상이 발생했다.
 - 주로 비디오와 네트워크를 동시에 사용하는 경우에 주로 발생했다.
 - 보드에 내장된 네트워크를 disable 시키고, 오래된 PCI 네트워크 카드를 설치했다.
* 또 다시 하드디스크의 속도가 느려졌다.
 - 보드에는 4개의 SATA 포트가 있다. 4개중 2개가 이상해졌고, 그 2개가 모두 Master에 해당하는 포트였다.
 - 될까 싶었지만 Slave 포트에 연결했는데, 다행히 잘 부팅했다.
* 오디오에서 이상한 현상이 나타났다.
 - 처음 오디오가 켜질 때에 스피커에서 딱~ 하는 큰 소리가 났다.
 - 마치 갑자기 쇼트된 것처럼.
* 얼마간 잘 쓰다가 다시 하드디스크의 속도가 느려졌다.
 - 마지막 남은 SATA 포트에 연결했다.
* 갑자기 블루스크린 발생
 - 며칠간의 간격으로 발생한 듯 하며, 간격이 점차 줄어든다는 느낌.
 - 주로 크롬브라우저에서 동영상(유튜브 혹은 기타 동영상)을 보는 중에 많이 발생했으며,
 - 마지막은 크롬 브라우저로 일반 사이트를 접속해서 사용하던 중, 그 사이트의 다른 페이지로 링크를 타고 넘어가는 순간... 한동안 응답이 없고, 브라우저 하단에는 "캐시를 기다리는 중"이라는 메시지가 보이다가 블루스크린이 떴다.
 - 이 현상이 발생할 때면, 하드디스크의 작동 LED는 들어와 있으나 메모리 덤프가 끝나지 않아 블루스크린 상태를 계속 유지하고 있으므로 강제로 파워를 꺼야만 했고,
 - 다시 새로 시작한 후에는 항상 Event Log에 디스크 콘트롤러 오류, 디스크 읽는 중 패리티 오류, 디스크 에러 등의 이벤트가 발생했었다고 나온다.


이상의 문제 현상들이 나타났을 때, 문제의 원인들을 찾아 보려고 노력했는데 아직까지도 정확한 원인은 찾을 수가 없었다.

1. 하드디스크의 노후
  - 이 부분은 원인이 아니었음이 밝혀졌다.
  - 새 디스크로 바꾼 후에도 문제가 타나났고, 노후된 하드 디스크로도 포트만 바꾸어서 정상이 되었다.

2. 파워의 부족
  - 위의 과정에서 중간 즈음에 이 문제를 의심해 보았다.
  - 본격적으로 의심한건 마지막 블루스크린이 뜨는 때 부터였다.
  - 블루 스크린이 발생하고 바로 다음날 파워를 뜯어서 분해해 보았지만 아무 문제도 찾지 못했다.
  - 사실 파워서플라이의 파워 부족을 어떻게 찾아내는지 그 방법도 모호했다.
  - 현대 내가 가지고 있는 멀티미터로는 12V/5V의 전원 핀에서 정상적인 전압이 나오는지 확인해 보는 것 뿐인데, 현재의 파워는 물론이고, 예전에 쓰다가 고장났다고 생각했던 파워도 전압 자체는 정상으로 나오고 있음을 확인했다.
  - 파워는 전압은 물론이고, 충분한 전류도 공급이 되어야 하지만, 전류를 측정하는 건 만만치 않은 작업이다.

3. 보드의 문제
 - 네트워크가 끊어지는 문제를 처음 본 다음부터 이 문제를 의심했다.
 - 육안으로 확인해 본 결과로는 부풀어오른 콘덴서 한개가 보였는데, 인터넷으로 구한 이 메인보드의 회로도를 통해서 확인해 보니 이 콘덴서는 전혀 상관이 없는 IEEE 1394에만 사용되는 콘덴서였다.
 - SATA 포트가 돌아가면서 문제를 일으켰으니 이 부분을 확인해 보았지만, 포트와 포트 주변의 회로는 매우 간단했으며 문제를 찾을 수 없었다.
 - SATA 포트가 연결되는 곳은 사우스 브릿지인 ICH7 칩인데, 이 칩의 주변에서도 특별한 문제점을 찾을 수 없었다.
 - 네트워크의 문제점이 발생하는 경우가 대부분 비디오와 함께 사용하는 경우였던 점을 생각하면 노스브릿지도 생각해 볼 수 있다. 하지만 이 칩의 주변에도 문제는 없어 보였다.
 - 결국 문제는 있지만 원인은 발견할 수 없다는 것.
 - 하지만 여기에서 한가지 의심스러운 정황은 IEEE 1394와 관련된 콘덴서가 부풀은 점.
 - 사용하지도 않았던 저 콘덴서는 왜 부풀은 것일까? 내가 구한 회로도가 잘못된 것이고, 실제로는 영향이 있는게 아닐까? 아니면 저 콘덴서를 부풀게 만든 어떤 원인이 다른 부분에까지 영향을 끼쳐서 문제가 된 건 아닐까?


지금으로썬 할 수 있는 방법이,
1. IEEE 1394에서 사용된다고 생각했던 콘덴서의 교체.
2. Video Card의 교체
3. 파워서플라이 교체
의 정도가 아닐까 싶다.

아니면... 이제는 놔줘야 하는걸까.

CPU : Intel Pentium D 920 Presler
Memory : DDR2 6400 1G x 4 (Dual Channel)
Main B'd : Gigabyte (GA-8i945PMF)
Video Card : NVidia GeForce 9500GT 512M
HDD : Hitach 1TB (HDS721010CLA332)

2018년 9월 16일 일요일

지구 종말에 대비해 소수를 선발하는 알고리즘?

곧 추석이 다가온다고 그러는지, 주말에 공중파 방송에서 외화들을 방영했다.
대단한 신작은 아니고 개봉한지 한참을 지난 영화지만...딥 임팩트라는 재난 영화였다.

지구로 돌진하는 소행성을 맞이하여 고군분투...그러나 역부족... 극소수만이 방주로 피신하고 대다수는 포기해야만 하는 암울한 종말.

이 영화에서는 무작위 혹은 인류에게 꼭 필요한 인재들을 선발하여 피신시킨다는 대목이 나오는데, 비슷한 재난 영화로 2012에서는 거금의 기부를 한 재벌들과 소수의 꼭 필요한 인재들을 선발해서 방주에 승선하는 대목이 나온다.


과연, 정말로 이런 상황이 닥친다면, 어떤 사람을 어떤 식으로 선발해야 하는 걸까 하는 고민을 해 보았다.

좀 극단적인 경우를 가정해서, 지구가 아닌 다른 행성으로의 이주를 하는 경우라면?

아주 대략적으로만 알고 있고, 세세한 부분은 알지 못하며, 어떤 상황이 닥칠지 예측이 불가능한 그런 곳에서 인류가 충분히 생존하기 위해서는 무엇이 필요할까?


다윈의 진화론을 인정한다면, 인류 진화의 방향은 사방 팔방 모든 방향으로 뻗쳐 나간다는 것을 인정해야 한다.
인간은 큰 키와 작은 키, 큰 몸집과 작은 몸집, 큰 용량의 뇌와 작은 용량의 뇌, 어떤 것도 치우치지 않는다.
진화의 방향은 "다양함"에 있다.
그 다양함은 전체 인간 종족의 입장에서는 환경에 대한 적응의 확률을 높이기 때문이다.


미지의 세계로의 이주를 위해서는, 가능한 다양한 분포를 이루도록 선발해야 할 필요가 있다.
어떤 요소를 대상으로 할 것인가가 실제로는 매우 중요한 요소가 되겠지만, 이것이 일단 정해졌다고 가정을 하자.
아마도 특정 요소를 기준으로 사람들의 분포를 모두 조사하면 가우시안 분포를 보일 것이다.
하지만, 이건 지구라는 환경에 적응한 결과일 뿐이다. 새로운 세상에서는 중심 축이 이동할 가능성은 얼마든지 있으며 이 또한 예측 불가능하다.


자, N개의 평가 요소가 주어졌다.
선발 대상으로 주어진 사람은 모두 M이라고 하자.

이제 M명의 사람들에 대해서 N개의 평가 요소에 대한 일종의 점수가 모두 매겨져 있다면,
과연 어떤 방법으로 선발을 하는 것이 가장 고른 분포를 이루게 할 것인지,
또 대단히 큰 수의 M명에 대해서 어떻게 효율적으로 빠르게 이 계산을 끝낼 수 있을까?
(단, 각 평가 요소는 서로에 대해 독립적이라고 가정한다.)

2018년 8월 23일 목요일

카카오톡 친구 차단에 대한 진실?

카카오톡을 아주 최근에야 설치하게 되었다.(바로 이틀 전이다.)

지금까지 카카오톡을 설치하지 않았던 이유는,
 - 주소록에 있는 사람들이 자동으로 친구로 등록된다는 문제.
 - 나의 근황을 알리고 싶지 않은 사람도 있고, 그런 사람들에게 관심을 일으키고 싶지도 않었다.
 - 개인적으로 사람들과의 교류는 적정한 거리가 필요하다는 평소의 생각도 한몫. 너무나 쉬운 연결 통로는 나의 개인적인 시간과 여유를 침범할 것이 자명하기 때문이었다.


그럼에도 불구하고 카카오톡을 설치한 이유는,
 - 몇몇이 함께 만나는 모임에서 약속 시간과 장소를 정하기 위해서 누군가 문자메시지를 모두에게 중복해서 발송해야 하고, 또 다른 사람의 의견이나 사정을 나머지 인원에게 재전송해야 하는 어려움을 겪고 있었다. 그래서 모두가 한번에 모여 얘기할 단톡방이나 채팅 공간이 필요했다.
 - 처음에는 녹색창 회사의 밴드를 쓰려 했는데, 누군가가 안쓴다고 해서, 결국은 모두가 쓴다는(나를 제외하고) 카카오톡을 선택.
 - 위에서 내가 우려했던 문제들은 적절한 설정을 통해서 방지할 수 있다는 친구의 설명을 들었다.



인터넷에서 검색을 해 보니, 실제로 카카오톡의 설정에서 "자동 친구 추가"를 해제함으로써 내가 우려했던 문제들이 해결된다는 글들이 여럿 보였다.

그리고, 용기를 내어 카카오톡을 설치하고, 본인 인증도 하고, "자동 친구 추구"나 "친구 추천"등의 설정을 모두 막아놓고 일단락.

모임의 친구들은 다음날 추가하려고 생각하고 잠이 들었다.



다음 날, 가족들이 만든 단톡방을 틍해서 누이가 톡을 보내왔다. 드디어 가입했구나, 축하한다, 어서 와라.... 허걱

인사도 뒤로 미루고, 대체 어떻게 알게 된건지 추궁하자 아버지의 스맛폰에 내가 친구로 올라왔다는 것. 그걸 보고 누이도 확인하고 톡을 보내왔다는 것.

대체 무슨일이 벌어진걸까?

잠시후에는 더 놀라운 일들이 벌어졌는데, 내 주소록에 있는 사람들 중 대다수가 친구로 올라왔다는 것. 나는 황급하게 가족과 몇몇의 친구들을 제외하고는 모든 친구들을 일일이 차단했고, 프로파일 비공개까지 설정을 해 줘야 했다.



가족들 모두 톡을 나누는 동안 카카오톡의 고객센터 항목에서 문의하기에 장문의 글을 올렸다.
그리고 다음날에야 답변이 올라왔다.


내가 올린 질문의 요지는, "나는 자동으로 친구가 추가되는 것을 원하지 않아서 모든 설정에 이와 관련된 것들을 모두 해제해 두었다. 그런데 원치 않는 상대방에게는 내가 친구로 보여졌다. 대체 무엇이 잘못된 것인가? 내가 설정을 잘 못한 것이 있는가?"

그리고 답변의 요지는, "카카오톡은 주소록에 저장된 번호의 사람이 카카오톡에 가입하면 친구로 등록되는 것이 기본 메커니즘이다. 따라서 니가 설정을 어떻게 하든지, 누군가 주소록에 너를 등록해 두었다면 그 사람에겐 니가 친구로 나타난다."라는 거....ㅆㅂ



그리고 더더욱 반가운(?) 사실은, 일단 상대방에게 친구로 나타나면, 니가 뭘 어떻게 하든지 상대방의 친국 목록에서 뺄 수 있는 방법은 없다는 거... 푸하하핳ㅎㅎㅎㅎㅎㅎㅎㅎㅎ


모두가 이런 사실을 알고 있는걸까?
아마 사용하고 있는 사람이라면 누구나 다 알고 있을 듯도 하지만,
아직 사용하지 않고 있는 사람이라면, 인터넷에 떠도는 그런 낭설을 믿고 안심해서 가입했다가 낭패를 보는 일은 없었으면 한다.

카카오가 프라이버시라는 단어의 의미를 알고는 있는 걸까?

2018년 7월 10일 화요일

하드 디스크 드라이브의 노후

과연 하드디스크 드라이브는 얼마나 오랜시간을 사용할 수 있을까?

지금까지 사용했던 수많은 하드디스크드라이브는 대부분 어느 시점엔 폐기었는데,
초창기에는 하드디스크 드라이브의 인터페이스의 변화에 따라 새로운 시스템에 사용이 불가능해지거나, O/S의 변화와 기술의 변화에 따라 필요로 하는 용량이 극적으로 늘어나면서 폐기되기도 했다.

물론 사용 중에 고장으로 인해 페기된 경우도 많았는데, 대부분은 IDE interface 방식으로 어느 순간에 갑자기 시스템에서 하드디스크를 인식하지 못하게 되거나, "딸깍,- 딸깍-..."하는 소리를 내면서 정상적으로 데이터를 읽고 쓰지 못하게 되면서 O/S 부팅이 되지 않게되곤 한다.
(전문적인 지식이 없지만, 나름대로 짐작하기에는 하드디스크의 뒷면에 부착되어 있는 interface B'd에 문제가 생겨서 고장난 것으로 생각된다.
즉, 물리적인 디스크와 헤드는 정상이므로, 이 Board만 수리하거나 같은 모델로 교체하면 정상적으로 작동하지 않을까 싶기는 하다.)


2018년 7월 11일 현재 사용하고 있는 컴퓨터 시스템도 꽤 오래된 구닥다리이지만, 여기에 장착해서 사용하고 있는 하드디스크도 굉장히 오래되었는데, 중간에 한번 교체한 것이긴 하지만 한번도 문제 없이 지금까지 사용하고 있다.(언제부터 쓴거지?)

그런데 며칠 전부터 컴퓨터가 이상하게 느려지기 시작했다.

항상 프로세스들에 대해 주시를 하고 있었는데, 특별히 이상한 프로세스도 없었다.
물론 안티 바이러스 프로그램은 사용하지 않는다.

그러다 발견하게 된 이상한 현상은,


컴퓨터가 느려진다 생각될 때에, Hardware Interrupts and DPCs가 CPU를 대부분 점유하고 있는 것을 알게 되었다.


그리고 혹시나 하는 생각에 하드디스크에 문제가 있는 것이 아닌가 싶어 확인을 해 보았다.
사용한 프로그램은 HD Tune.

HDTune Benchmark

전송 송도가 정상의 1/30에도 미치지 못한다.
인터넷을 찾아보니 이 모델의 평균 전송 속도는 대략 100MB/sec 전후.
Access Time은 거의 정상.
그리고 하드디스크가 자신의 일을 잘 못할 뿐 아니라, 이로 인해 컴퓨터가 전반적으로 느려지는 지대한 공헌(?)을 했다는 증거인 CPU Usage는 무려 55.8%.
아마도 정상이라면 2~4%를 넘지는 않았어야 하는 항목이다.

HD Tune의 나머지 항목도 살펴 보았다.

HDTune Info
HDTune Health

보통 하드디스크에 문제가 발생하면,
위의 항목 중 (05) Reallocated Sector Count가 증가하기 시작한다.
확실하진 않지만 아마 (C4) Reallocated Event Count도 같이 증가하지 않을까 싶다.
내 디스크의 경우에는 (C7) Ultra DMA CRC Error Count가 1146이 나왔다는게 의심스러웠는데 며칠간 추적해 봐도 더 이상 늘어나지는 않았다.

문득 이걸 보면서 들었던 생각은... 참 많이 썼구나... 였다.
(09) Power on Hours Count : 작동 시간이 30728시간. 3.5년간 하루 24시간 계속 사용해야 하는 시간이다.
(0C) Power Cycle Count : 껐다가 켠 횟수 5205회. 하루 한번씩만 컸다 켜도 14년이 걸리는 횟수.

HDTune Error Scan
시간이 너무 많이 걸리고, 상태도 메롱이라 Quick Scan으로 검사해본 결과는 이상이 없다.


인터페이스 보드에 문제가 생겨서 인식 불량, 데이터 접근 불가능의 문제가 생기는 경우는 종종 봐왔지만, 마치 사람이 늙어서 기운이 떨어지는 것처럼 하드디스크가 성능이 급격히 느려지는 경우는 처음이었다.

사실 이에 대해서 다른 의심을 해 보기도 했다.
여름이 되면 온도가 상승하면서 컴퓨터의 여러 부품들에도 열이 가해져서 데미지를 입는 경우가 있다.
혹시 파워서플라이에 문제가 있어서 적정한 전압이 공급되지 않거나 전력이 부족해서 생긴 현상은 아닐까 하는 의심.
전력의 문제는 모르겠으나, 직접 확인해 보니 전압은 정상적으로 공급되고 있었다.


언제 갑자기 동작을 멈춘다해도 이상하지 않을 상황이라, 새로운 하드디스크를 주문해 놓은 상태이다.

이제는 편히 쉬도록 해 주어야 하는 걸까?

2018년 1월 16일 화요일

Android 에뮬레이터?

Google에서 제공하는 Android SDK에 포함된 Android 에뮬레이터는 매우 무겁고 느리게 느껴진다.

Android 버전에 따라, Host의 시스템 성능에 따라 많이 달라지기야 하겠지만...

개발자의 입장에서는 실제 Android 기기와 100% 동일하게 작동하는 에뮬레이터가 가장 이상적이겠지만, 나처럼 특정 App을 PC에서 사용해야 하는 사용자의 입장이라면 완벽한 호환성은 양보하더라도 무난하게 사용할 수 있는 성능도 중요하다.

아마, 언젠가 이런 필요성 때문에 Android 에뮬레이터를 알아보긴 했었나보다.
그리고 언제나처럼 귀차니즘으로 "알아보기"만 하고 마무리는 짓지 못했었던 듯...

다시 필요성이 느껴져 잠시 고민을 하다가,
Android-x86이라는 것이 있음을 알게 되었다.
Virtualbox에 Android-x86을 설치하면 꽤 무난한 성능을 보여주길 기대하면서...

설치하는 방법은
https://www.howtogeek.com/164570/how-to-install-android-in-virtualbox/

Android-x86의 ISO를 다운로드 하는데 시간이 꽤 걸린다.
600~700MB 정도인데, 서버가 그리 넉넉하지는 않은 것인지 1시간 넘게 걸려야 다운로드가 완료될 예정.
기다리는 동안에 간략하게 포스팅 하는 중.

모쪼록, 다운로드 후에 귀찮다고 내버려 두지 않길 바란다.


다행히도, 다운로드 후에 설치도 해 보았고 몇가지 작동도 해 보았다.
우선 몇가지 팁(?)을 적어야 겠다.

  • 반드시 Virtualbox의 "마우스 통합 비활성화"를 선택해야만 한다.
    Virtualbox 메뉴의 "머신" 항목에 있으며 단축키는 Host(우측 컨트롤키) + i로 토글된다.
    이걸 선택해야만 하는 이유는, 터치하지 않은 상태에서도 마우스의 움직임을 볼 수 있기 때문인데.... 잘 이해가 안되면 직접해 보면 알게 된다.
  • 시스템을 종료할 때에는 Virtualbox 메뉴 "머신 - ACPI종료"를 선택하면 된다.
    핫키는 Host + h
  • 간혹 일부 앱의 경우에는 화면의 비율 때문에 90′ 회전하는 경우가 있다.
    앱의 종료 후에도 회전한 상태로 남아 있는 경우에는 메뉴 "머신 - Ctrl-Alt-Del누르기"로 원래 상태로 돌아 올 수 있다.

사용해 본 소감을 말 하면,
  • 많은 리소스와 메모리가 필요하다. 어쩌면 너무 당연한걸지도 모르지만, 스마트폰에 사용되는 CPU가 비록 모바일용 CPU라 할지라도 최신 사양인걸 생각하면...
  • 설치하는 중에 잠깐 먹통인 듯 싶은 경우가 있는데, 참고 기다리면 된다.
    디스크 파티션을 만드는 첫번째 화면에서 이런 경우가 있었다.
  • 설치 도중에, 정확히 말하면 파티션과 파일 시스템에 대한 설정을 모두 마치고 파일을 복사하는 과정에서 오류가 나서 멈춘 경우가 있다.
    다시 처음부터 시작하니 문제 없이 진행이 되었다.

위 링크의 마지막 부분에는 이 방법이 제일 효율적이지는 않다며 블루스택이라는 제품을 권유하고 있었다.... 이걸 왜 다 하고 난 다음에야 봤을까ㅠㅠ