'2017/10'에 해당되는 글 2건

주말도 언제나 그렇듯이 이렇게 지나가고 있습니다.


하지만 언제나 똑같이 모든 시간이 흘러가는 것은 아니더군요. 오늘은 컴퓨터나 기술적인 이야기가 아닌 감상적인 이야기를 해볼까 합니다.


현재를 살아가는 모든 어른들은 어릴적의 추억을 다들 간직하고 있습니다. 그것이 좋았든 나빴든 다들 잊을 수 없는 한 폭의 그림처럼 갖고 생각하는 것들입니다. 제 나이도 어느덧 30이 되어갑니다. 20대의 무모함도 이젠 거의 사그라들었고 이젠 책임감이 점점 더 막중하게 다가옵니다.


하지만 이러한 무게를 잠시나마 내려놓을 수 있는 시간이 잠시동안 있지요. 바로 어릴적의 기억을 되짚어 가며 추억을 되살리는 시간입니다. 요즘같이 바쁘게 흘러가는 때에는 "어렸을 때로 돌아가고 싶다."라는 생각이 들 때가 많습니다. 그러니까 현실보다는 미래의 환상을 그리면서 마음껏 뛰놀던 그 시기가 그리운 것입니다.


제가 다니던 중학교는 운동장이 정말 둘째가라면 서러울 정도로 컸습니다. 사실은 운동장 하나를 두 학교가 공유하는 형태였는데 운동장이 워낙에 넓다보니 축구골대가 4개에 농구 골대가 6개가 있는 곳이었습니다. 그러고도 공간이 남아서 한쪽에서는 깡통차기를 할 정도였지요. 체력검정을 할 때 요즘은 100M가 채 안되는 학교가 많아서 50M달리기를 한다고 하던데 제가 다니던 곳은 100M 달리기 쯤은 동시에 한꺼번에 측정이 가능했고 (네. 남들 50M뛸때 저희 학교는 100M 뛰었습니다.) 오래달리기(그러니까 보통 8바퀴인지 7바퀴인지 도는 그거)는 동시에 두 곳을 돌았습니다. 말 그대로 멀티프로세스가 가능했던 탓에 빨리 끝나는 반은 점심시간 이전에 오래달리기를 할 수 있었습니다.


게다가 도시 전체에서 학생 수용량도 많은 편이라서 학생들이 넘치는 다른 동네에서 그 학교로 배정받는 경우도 많았습니다. 덕분에 통학하는 방법들이 가지각색이었습니다. 자전거, 버스, 지하철(거리가 있어서 약간 좀 걷기는 합니다.) 등등


하지만 이제 그 학교는 더 이상 학생을 받지 않습니다. 인구가 줄어들면서 중학교에 들어가는 학생이 많이 줄었고 교실이 남아도는 현상이 발생하는 바람에 근처 학교를 통폐합하기에 이르렀습니다.


지금도 출근할 때 마다 그 앞을 지나가곤 하는데 교문이 공사장 펜스로 가려져 있기에 무슨일인가 했었습니다. 알고보니 제가 다니던 학교가 이웃한 다른 두 개의 학교와 통합되어서 사라졌더군요. 네 쉽게 말해서 폐교 된 겁니다. 조금 더 지하철 역에 가까운 학교가 이름이 바뀌어서 모든 학생들이 그곳에서 수업을 받는 것으로 바뀌었습니다.


모교가 폐교되었다고 하니까 참 기분이 묘하더군요. 더군다나 시골도 아니고 지하철로 한 정거장만 더 가면 서울인 이곳에서 말이지요.


아직까지 학교 부지를 어떻게 활용할지에 대해서 아무런 이야기가 나오고 있지 않기에 그저 먼지만 쌓이게 될 것이라는 것을 알게 되니 씁쓸하네요.


여기에 한 가지 더...


저는 자주 만나는 친구가 있습니다. 회사가 가까워서 퇴근 시간만 맞추면 언제든지 만날 수 있거든요. 그 친구와는 초등학생때 부터 같이 다녔습니다. 생각해보니 초중고 전부 같은 학교였네요. 뭐 질긴 인연이라면 질긴 인연이지요. 집도 가까운 편이라 자주 같이 놀았습니다. 학교 끝나면 같이 놀고 저녁때에 집에 돌아가는 것이 일상이었습니다. 특히 동네 골목길을 돌아다니면서 놀던 기억이 아직도 생생합니다. 딱히 놀만한 공간은 없었으니 골목길이 전부였다고 해야지요. 지금은 차가 많아서 그마저도 힘들지만요.


그런데 그 골목길도 이제 머지않아 사라지게 되었습니다. 10년정도 진행할 예정인 재개발 계획이 잡혀버렸거든요. 향후 10년 뒤에 그 동네는 모습이 달라지겠지요. 지금 구청과 동사무소에서는 동네의 모습이 사라지기 전에 사진을 찍어서 보관하고 있다고 합니다. 그 친구도 아쉬워 하더군요. 학교가 폐교되지를 않나 동네가 재개발되어 사라지게 되질 않나...


이외에도 사라진 추억이 너무 많습니다. 어렸을적 사거리 코너에 있던 작은 호떡집은 도로 확장공사로 사라졌고, 초등학교 앞에 있던 문방구(보단 하교시간에 게임하는 애들로 북새통이었던...)도 장사가 안 된다고 문을 닫았습니다. 게다가 초등학생이었던 우리에게 사회 숙제를 도와줬던 공장은 빈 공터만 남기고 없어졌습니다. (지금 생각하면 초등학생한테 사회숙제로 공장에 가서 인터뷰하고 오라고 한 학교도 대단하긴 합니다.)


크라잉넛의 고물라디오란 노래를 들으면 이런 가사가 있습니다.

"고물라디오처럼 내 곁을 떠나가버린 이제는 볼 수가 없는 싸구려 고물라디오"

중간을 생략하긴 했지만 현재 제 마음에 정확히 화살을 꽂는 가사네요.


이제는 사라진 중학교 때의 앨범과 앳되었던 제 모습을 보면서 쓰던 글은 이만 마치겠습니다.


P.S 어떻게 된 게 시골에 있는 어머니가 다니던 학교보다 도시 한복판에 있는 제가 다니던 학교가 먼저 사라질 수 있는지... 참...

,

리눅스는 알다시피 게임용으로 쓰이기가 어렵습니다. 현존하는 대다수 PC게임들이 Windows용으로 나오고 있기 때문이지요. 하지만 SteamOS가 발표된 이후 메이저 게임업체에서는 자신들의 게임을 Linux용으로 포팅하기 시작했습니다.


그런데 과연 리눅스는 게임용으로 좋은OS일까요? 사회적인 이유는 집어치고 기술적인 이야기만 조금 하려고 합니다. 따라서 이번에도 글만 주루룩 나오겠군요.


1. Linux Gaming의 발목을 잡는 문제아. VGA Driver


PC게임에서 제일 중요한 부품은 무엇일까요? 대부분 사람들은 여기서 그래픽카드(VGA)를 생각하실 것이라고 생각합니다. 실제로 게임용 PC에서 제일 중요하게 여기는 것은 GPU의 성능입니다. CPU의 성능도 상당히 중요하지만 현대에서는 그래픽옵션을 어디까지 올릴 수 있느냐를 제일 먼저 보는 것이 당연시 되었습니다.


2017년 현재 그래픽카드 칩셋을 설계하는 업체는 Nvidia, AMD, Intel 셋이라고 봐도 과언은 아닙니다. 이 중에서 Intel칩셋은 언제나 게임성능이 별로 좋지 않기로 정평이 나있지요. Nvidia는 Geforce시리즈로 AMD는 Radeon시리즈가 있으니 이쪽은 아무리 싸구려를 써도 기본은 하는 편이고요.


그런데 리눅스용 드라이버 지원문제는 이래저래 문제가 참 많습니다. Intel의 그래픽칩셋을 게임용으로 쓰는 경우는 드물테니 넘어가고 Nvidia나 AMD 둘 다 리눅스에 관해서는 참 뭐같지요.


Nvidia의 경우 리눅스 지원이 그래도 좋습니다.

"좋은데 뭐가 문제야?"라고 하실지도 모르겠지만 문제는 오로지 바이너리 형태로만 지원을 합니다. 사실 리눅스커널에 드라이버 지원을 넣고 싶어도 바이너리 형태이기 때문에 Nvidia의 드라이버는 내장할 수가 없습니다. 우분투도 설치후에 따로 Nvidia의 드라이버를 다운로드 받아 설치를 하게 되어있습니다.


이는 Nvidia의 정책 때문인 것으로 보입니다. 아직까지는 Nvidia가 리눅스 지원을 잘 해주고 있지만 만약 Nvidia가 갑자기 지원을 끊어 버리면 어떻게 될까요? 그동안 Nvidia칩을 쓰던 리눅스 유저들은 낙동강 오리알 신세가 되는 겁니다. 실제로 Adobe가 그러한 일을 했었지요.



이는 토발즈 형님께서도 달갑지 않게 생각하고 계시며 Nvidia가 욕을 먹는 계기가 되었습니다. 하지만 회사차원에서 지원을 해준덕에 상당히 드라이버 성능이 좋다는 것이 일장일단이 있는 것이겠지요.


AMD의 경우에는 까탈리스트(Catalyst)라 불리는 문제의 드라이버가 말썽을 참 많이 일으켰습니다. 하지만 Catalyst는 이제 우분투에서 지원을 하지 않습니다. 왜냐하면 오픈소스 드라이버의 성능이 상당히 좋아져서 굳이 버그많고 시스템을 자주 사살하는 까탈스러운 녀석을 쓸 이유가 없어졌거든요. 대신 Catalyst가 지원되던 시절의 성능은 나오고 있지 않습니다. 대략적으로 약 80%정도 나온다고 하네요.


하지만 1프레임에 목숨을 거는 하드코어 게이머라면 20%성능조차도 끌어올리고 싶을 겁니다. 하지만 우분투 16.04이후 Catalyst는 정식 지원이 되지 않으므로 이를 설치했을 때 이전보다 더 큰 문제가 일어날 가능성이 높습니다. 아니, 정식지원 시절에도 문제가 많아서 열받았던 사람이 한 둘이 아닙니다! (대표적으로 제가 있습니다.)


AMD의 Radeon은 사실 Ati시절부터 자신들의 드라이버가 문제가 많았다는 것을 알았기에 이런저런 정책을 폈는데 그 중 하나가 자신들의 칩셋에 관한 문서를 오픈소스 커뮤니티에 제공을 하는 것이었습니다. 사실 지금의 오픈소스 드라이버 성능을 낼 수 있게 된 것이 바로 이 문서들 덕분이라고 해도 과언은 아닙니다. 그리고 KMS(Kernel Mode Setting - 커널이 VGA세팅을 직접 할 수 있게 한 기능)의 초창기 시절 Intel보다 Radeon을 먼저 KMS지원을 할 수 있게 도와주었습니다. 덕분에 이미지는 많이 좋아졌습니다. 하지만 예전에 당했던 상처가 아물기까지 아직도 세월이 많이 흘러야겠다는 생각이 듭니다.


표로 정리하면 이렇게 되겠네요.


리눅스에서의 게이밍용 GPU 비교


 

 Nvidia (Geforce)

AMD (Radeon)

Intel

드라이버 지원

 바이너리의 성능이 훨씬 더 좋음

오픈소스 추천

오픈소스 뿐

 추천 여부

 귀찮은것 싫어하면 추천

 약간의 삽질을 즐긴다면 추천

 Windows에서도 추천 안 함


뭐... 그냥 제 마음대로 정리 한 것이니 넘어갑시다.


2. CPU의 지원?


요즘에 나오는 CPU는 전부 멀티 코어로 구성되어 있습니다. 따라서 요즘에 나오는 게임은 멀티스레드를 기본적으로 어느정도 만들어서 굴리게 되어있습니다. 그런데 멀티코어 프로그래밍이라는 것이 그렇게 쉽게 만들어지는 것이 아닙니다. 아무리 숙련된 프로그래머라고 해도 만약 시스템에서 이를 받아주질 못하면 말짱 꽝이라는 의미입니다.


Windows가 멀티스레드를 제대로 지원한 운영체제가 아마 WindowsXP SP1부터라고 기억하고 있습니다. 물론 서버용인 Windows 2000도 가능은 했다고 하지만 일반인이 서버용을 썼을리는 만무합니다. 하지만 WindowsXP SP3를 쓰더라도 현재 Windows7 이후의 멀티코어 성능보다 훨씬 더 효율이 떨어집니다. 왜냐하면 코어에 프로세스를 할당하는 알고리즘 자체가 최적화가 덜 되었거든요.


그럼 리눅스는 어떨까요? 사실 리눅스는 애초에 서버용으로 쓰였기에 멀티코어에 대한 준비는 어느정도 되어있었습니다. 다만, 이쪽도 완벽하지는 않았기 때문에 커널 2.6 시절에는 멀티코어 시스템에서 일부 싱글코어 프로그램을 돌리면 커널이 프로세스를 한 코어에 할당하는 것이 아니라 이 코어에 넣었다가 저 코어에 넣었다가 하는 삽질을 동원했었습니다. 그러니까 멀티코어를 쓰려고 하다보니 도리어 효율이 이상해지는 효과를 보았던 것이지요. (일종의 버그였습니다.)


엄밀히 말하면 리눅스에서 준비했던 것은 서버에서 쓰이는 멀티CPU (그러니까 한 보드에 CPU가 2~4개 정도 박히는 물건)를 고려했던 것이지 현재의 한 CPU에 여러 코어가 올라간 것을 생각한 것은 아니었기에 있었던 일입니다.


현재는 커널에서 CPU에 대한 대응을 했기에 그런 일이 일어나지는 않지만 언제 다시 그런 버그가 벌어질지는 아무도 모릅니다. 실제로 AMD의 Ryzen의 경우 커널에서 바로 대응을 못해서 한 달 뒤에나 제대로 쓸 수 있게 되었습니다. 멀티코어 프로그램에서 이상 작동이 많았다고 합니다. 이 멀티코어 프로그램에는 커널도 포함합니다. 즉, 커널 패닉을 불러왔다는 것이지요.


리눅스용 게임의 경우 이러한 시스템적 이해가 없으면 문제를 일으키기 십상입니다. 효율이 떨어지는 발적화가 나오기도 하고 일부 시스템에서는 구동 자체가 안 되기도 합니다. 하지만 아직도 개발사들은 리눅스에 대한 이해도가 그렇게 좋지는 않은 것으로 보입니다. 대형 개발사의 게임은 상당한 최적화를 보이지만 개발환경이 열악한 인디게임에서는 상당한 발적화가 보입니다. 



3. 비표준 ACPI 전원관리자


ACPI는 PC의 전원을 관리하기 위해 만들어진 일종의 규격입니다. 우리가 소프트적으로 전원을 차단하고 절전모드에 들어갔다가 배터리의 양을 체크해서 최대절전모드로 들어가고 하는 등의 모든 전원관련 프로세스는 이 녀석이 담당합니다.


사실 이 ACPI는 하드웨어 업체에서 어느정도 표준에 맞추어서 만들어냅니다. 그러니까 몇번 핀에 어떤 신호를 주면 전원이 차단된다던지 하는 것들 말이지요. 이를 OS가 읽어내서 하드웨어에 그렇게 작동되게끔 하는 것입니다. (말이 조금 어렵지요? 그러니까 OS가 부팅 될 때 메인보드에서 OS에 자신의 사용설명서를 제공한다고 생각해보세요)


그런데 Windows는 워낙 괴랄한 하드웨어 지원을 하기 때문에 ACPI이전의 APM이라 불리는 전원 관리자부터 각 회사마다 제멋대로 만들었던 전원관리방식까지 다 지원합니다. 그래서 몇몇 하드웨어 업체는(특히 중국산 노트북이 대표적) ACPI를 대충 만들어서 넣어도 Windows가 알아서 잘 해주니까 그냥 파는 경우가 있습니다.


이런 하드웨어에 리눅스를 설치하면 OS가 ACPI를 제대로 이해하지 못해서 엉뚱한 전원제어를 할 수도 있습니다. 예를 들면 멀쩡히 작업을 하고 있는데 온도가 조금 높아졌다고 바로 시스템을 종료한다던지 배터리가 50%남았는데 배터리가 없다고 판단해서 꺼버린다던지 하는 것들을 말합니다.


이런 시스템에서 게임을 한다면 어떻게 될까요? 자칫 잘못하면 시스템이 과열되었는데도 팬이 돌지않아서 죽어버릴 수도 있고 데이터오염으로 세이브가 날아갈 수도 있습니다. 제일 큰 문제는 그냥 고장나버리는 것이겠지요.


현재 우리나라에서 팔리는 대부분 컴퓨터는 정상적인 ACPI를 가지고 있다고 생각합니다. 특히 유명업체를 쓴다면 신경 쓸 이유는 더더욱 없겠지요. 하지만 해외에서 직접 구매해서 쓰는 경우도 있을 수 있고 일부 메인보드가 문제가 있을 수도 있습니다. 이런 것이라면 SteamOS를 설치를 한다고 해도 제대로 된 SteamBox로 쓸 수는 없을 것입니다.




===

지금까지 리눅스에서 게임을 하는 것에 대한 하드웨어 이야기를 했는데 사실 이런 저런 이야기를 했지만 사실 하드웨어적으로 큰 문제는 없습니다.

GPU의 경우에는 드라이버 지원이 결국에는 잘 되고 있는 것이고(Nvidia는 바이너리로 AMD는 오픈소스로)

CPU지원은 나온지 얼마 안 된 모델이 아닌 검증된 모델을 사용하면 그만이니까요.

ACPI문제는 이상한 업체의 부품이 아닌 유명업체를 쓰면 되는 것입니다. (보통 게임용 PC를 맞추시는 분들은 좋은 부품을 쓰려고 하니까 큰 문제는 없는 셈이지요.)


하지만 소프트웨어는? 음...


이건 다음에 이야기해보도록 하지요.

,