Google Adsense Side (160x600)



아이패드 에어의 1GB 메모리에 대한 단상... 썩은 사과

아이패드 에어 역시 예상대로 1GB의 램을 장착하고 나오자, 곳곳에서 램고자(--;)소리가 나오는 것 같군요.

이번에 출시된 아이패드 에어가 다른 부분은 뭐 불만이 거의 없을 정도로 상당한 완성도를 자랑하는 것 같고, 스팩도 현재 애플 이외의 곳에서는 상용화된 ARMv8 아키텍쳐의 AP가 안나오는 상황에서 벤치 결과를 토대로 보면 비겁하다 싶게 최상급을 자랑하고, 무게 역시 동급 최저인 주제에, 배터리 시간 역시 지켜냈기 때문에(발열도 줄었기를 바라는데...줄었겠죠)...



1GB가 큰 문제는 안된다

iOS는 지금 사용중인 앱에 리소스를 몰아주는 형태라서 단일 앱이 1GB를 거의 다 사용한다는 가정을 하면, 아이패드 정도의 모바일 플랫폼이라는 것을 감안해서 보면 큰 무리는 없죠. 오히려 아이러니하게도 안드로이드에서 같은 짓을 시도하면 리소스를 한번에 못 빨아서 죽거나 동작을 안하는 경우가...
그리고 iOS는 밑장 빼기 테크닉의 극의를 보여주는 구현을 시스템 전부분에 걸쳐 많이 하고 있다보니(화면 밖으로 나간 리소스는 회수해서 재활용) 메모리 활용성이 상당히 높습니다.

이미지 같이 정말 자주 사용되고 메모리 신나게 먹는 리소스도 애플의 메모리 관리 최적화 노력에 의해 예상밖으로 엄청난 수의 이미지를 로딩하고도 메모리 사용은 억제되는 것을 직접 경험해 본 바, (풀스크린 사이즈(비레티나 시절, iPad1) 30개 정도를 읽어들여서 순차적으로 보여주는데 대략 20MB 정도의 메모리를 사용) iOS의 메모리 최적화는 옛날부터 엄청 빡세게 되어있는 것으로 여겨집니다(일례로 로우 메모리 상태가 되었을 때 화면에 보이지 않는 이미지 같은 경우 만일 파일 경로로 생성했으면 파일 경로 빼고는 전량 자동으로 회수된다고 함). 이미지 같은 경우도 일부러 괴랄하게 스트레스 테스트를 하지 않으면 실제 화면에 보이는 것이 얼마나 될까요?

그래도 좀 아시는 분들은 로그 보면 로우 메모리 워닝이 수십번 뜨자나~ 하실텐데...



로우 메모리 워닝(Low Memory Warning)

로우 메모리 워닝은 어감 때문에 좀 안좋은 인상을 주는데, 사실 지금 메모리 부하가 걸렸다는 경고 신호에 불과한 것이라서 그 자체로는 나쁜 것도 아니고, 그야말로 일상적인 것이지요. 그 어떤 프로그램도 메모리 요구를 안할 수는 없으니까요. 다만 문제는 이게 발생했을 때 앱들이 어떤 대응을 하느냐가 관건이 됩니다.

일반적으로 로우 메모리 워닝이 뜨면, 백그라운드 들어간 앱들과 시스템 서비스 등에 회수 작업이 들어가게 되는데, 문제는 저 작업이 들어가고 회수될 여유를 주지 않고 계속 메모리를 요구하면 그때 바로 뻑이 나는 것입니다(튕김). 물론 그냥 메모리를 무작정 들이켜서 죽을수도 있는데, 사실 아이패드 정도에서 그런 미친 메모리 작업을 시도하는 경우는 현실적으로 별로 없을 것 같구요. 뻑이 나는 거의 대부분의 이유는 로우 메모리가 아니라 다른 버그(주로 잘못된 메모리 참조)때문이죠.

그리고 Objective-C/Cocoa의 특성상 이벤트 루프를 빠져나가서 다음 루프로 가 줘야 임시 객체들에게 할당된 메모리가 줄어드는데(이는 별다른 명시적인 최적화를 안한 경우의 해제 시점이 거기다 보니) 이벤트 루프 안빠져 나가고 계속 메모리를 요구하다보면 확실하게 문제가 발생하지요. 위에 언급한 앱의 경우는 계속 백그라운드에서 천천히 읽어들이는 형태 + 임시 객체의 명시적인 해제 시점 지정으로 구성해서 메모리 순간 부하를 분산시키는 형태로 구현했던 것이구요.

따라서 정상적인 애플의 권고를 따라서 구현한 앱들은 1GB에서 별 문제가 없습니다...아니, 없어야 됩니다.

그러나 현실은 시궁창이라...

위와같이 이벤트 루프 안빠져 나가고 한 메서드에서 단번에 모든 리소스를 몽땅 읽기 이런 시도를 하는 경우 앱이 실행도 못하는 경우가 발생할 수 있죠. 직접 보기도 했구요. 그때 자칭 메모리 클린앱(?)을 돌리면 앱이 실행되기도 하는데...메모리 클린 앱이랍시고 나온 것들의 경우도 콘솔 메시지 띄우고 돌려보니, 자체적으로 메모리를 쳐먹어서 로우 메모리 워닝을 발생시켜 백그라운드로 들어간 앱들과 덜 중요한 시스템 서비스들과 동반 자살하는(--;) 구현을 했더라구요. 즉, 다른 서비스들이 죽어서 메모리가 확보되어 문제가 되는 앱이 실행되는 것이죠. 이건 메모리가 부족하다기 보다는, 실행 안된 앱이 방만한(또는 잘못된) 구현을 한 것이죠.



그래도 1GB는 좀 불만족스럽다!

문제는 태블릿 사용의 상당 시간을 차지하는 웹 브라우징에서 발생합니다. 특히나 iOS7에서는 사파리가 다운이 자주 되더군요.

진짜 메모리 문제인가 싶어서, 다운되는 것으로 잘 알려진 토마스 짝퉁 토미스(--;)를 파는 지마켓 상품 페이지를 열고 콘솔 메시지를 확인해 보니, 역시 메모리 부하로 죽는 것이더군요. 여기서도 저 페이지를 열고 천천히 스크롤해 가면 다운이 안될수도 있습니다. 애플의 최적화 테크닉인 밑장 빼기(화면 밖으로 나간 부분의 메모리는 재활용)는 아이폰의 역사와 전통을 자랑하는 것이라...
근데 그 밑장 빼기를 제대로 하지도 못할 정도로 스크롤을 빨리 해버리거나 하면 여지없이 문제가 발생하더군요. 
다만 애플의 최적화 방향에 매우 큰 요소인 반응성(responsiveness)과 맞물린 사파리의 구현 전략이, 최대한 빨리 리소스를 화면에 뿌리려 하는 과정에서 로우 메모리 상태 처리가 조금 미흡하게 된 것이 아닌가 싶습니다.

개인적으로는 "그런 비대한 웹 사이트가 문제가 있지 않은가?" 라는 "아이폰은 그렇게 잡는 것이 아닌데?" 라던 고 잡스옹 스러운 얘기를 하고 싶긴 합니다. 인터넷 느린 곳에서 살아보면, 그런 비대한 사이트가 얼마나 스트레스 만빵인지 절실히 깨닫게 되거든요.
그러나 잦은 다운은 문제가 있다고 봅니다. 일종의 사파리 버그라고도 볼 수 있을 것 같아요(사파리의 경우 로우 메모리 말고 잘못된 메모리 참조 등으로 다운되는 경우도 여러번 확인할 수 있었음). 아마 다음 업데이트 쯤에서는 좀 대응이 있지 않을까 싶어요. 

그리고 애플로서도 메모리를 막 퍼주면, 안드로이드보다 현재 실행중인 앱이 메모리를 방만하게 사용 가능한 iOS다보니, 방만한 앱 개발자들이 방만한 앱을 만들어서 하위 기종에서는 아예 실행도 못하게 만들 수 있으니, 전략적으로 보수적인 태도(개발자를 조교하고 있...그리고 애플이 옛날에 무리수를 두다 쫄딱 망할뻔 한 이후에는 엄청나게 보수적인 전략을 고수하는 편이죠)를 보이는 것도 있다고 보이구요. 물론 그로 인해 제조 비용 절감도 무시 못할 요소이지요.


근데 이런 단일 앱 말고, iOS7의 특징인 멀티 태스킹, 그리고 A7의 특징인 64bit와 맞물리면 좀 다른 양상을 보인다고 생각됩니다. 저 두가지 모두 메모리가 더 필요한 일이니까요. 저는 사실 이번에는 저 두가지 이유로 인해서 메모리가 늘어날 줄 알았어요. 그러나 1GB죠. 물론 단일 앱 실행에서는 문제가 없어야겠으나, 멀티 태스킹이 출동한다면? 아마 계속 새로 로딩되는 꼴을 보겠죠(이미 보고 있고). 물론 애플은 이번에 A7의 퍼포먼스로 로딩 시간을 커버한다는 일종의 trade off 를 했을지도 모르겠군요(64bit 최적화 전략에서 캐슁보다 재로딩을 하도록 권하니까)...


그래서 제 개인적인 결론은...

1GB가 일반적으로 (정상적인 개발자가 만든 앱들의 경우) 큰 문제는 안되지만, iOS7/64bit 라는 것을 생각해 보면 조금 아쉽긴 하다...

정도네요. 
아마 내년 모델은 확실히 메모리 증가가 될겁니다.
애플의 경우 사용자의 애간장을 녹이다가 그 효과가 극대화 될때 감춰둔(척 하던) 카드를 꺼내면서 생색내는 녀석이니...
(쇼맨쉽보다는 최고의 효과를 볼 시점까지 기다렸다가 올리는 느낌이죠)

...말은 이렇게 했지만 살것 같음...
(우선 미니2로...그리고 이번에 어머니께 에어를 장만해 드리려 합니다.)
뉴질랜드도 오늘부터 아이패드 에어 예약 받네요. 그러나...
전 회사에서 세금신고를 잘못해서 매달 밀린 세금 등등을 더 내게 되어...--;




덧글

  • RuBisCO 2013/11/05 16:44 #

    문제가 이제 iOS7부터 그 슈도멀티태스킹을 버렸는데 백그라운드에서 돌아야 할 앱들이 누적되면 문제가 심각할 듯 싶습니다. 심심하면 앱이 하나둘씩 꺼지면 환장하죠.
  • 오오 2013/11/05 17:01 #

    근데 그 멀티태스킹이 시스템 서비스나 데몬마냥 계속 도는 것은 아니고, 상황에 따라 죽었다 깨어나거나 뭐 그럴 수 있게 되어 있으므로 기술적으로는 애플이 하라는대로 구성한다면 짜증나는 재로딩이 있겠죠.

    이게 과거 몇몇 카테고리(음악, GPS, VOIP, 다운로드등)에 한한 멀티태스킹 이외에 iOS7은 일정시간마다 깨어나는 스타일, 또는 외부 자극(푸쉬)을 받으면 깨어나는 스타일...뭐 이런게 추가된 형태입니다. 대신 중단 상태 복구 기능이나 지능적인 스케쥴링 뭐 이런쪽을 강화했다고 자랑함.

    신기한 것은 이정도라면 좁은 의미로 보면 진정한 멀티태스킹이 아니라고 대차게 깔수 있는 소재가 될 것 같은데도 이상하게 이걸 까는 것은 본 적이 없네요. 기(레기)자(식)들의 수준 때문일지도...
  • RuBisCO 2013/11/05 17:12 #

    뭐 그정도만 해도 장족의 발전이긴 하죠. 그정도만으로도 그동안 골때리게 만들어온 문제의 상당 부분은 일단 아쉬운대로는 커버할 수 있습니다. 뭐 안드로이드처럼 완전한 멀티태스킹을 해주는게 가장 좋겠지만 애플이 그정도로는 안풀어줄 모양일듯하군요. 그건그렇고 문제는 그 짜증나는 재로딩을 해야한다는 그 자체니까요. 돌려막기를 한다고 쳐도 재로딩 과정에서 걸리는 부하도 문제고 잘못되어서 작업중이던 내용이 홀라당 날아간다던가 하는 재앙이 벌어지기도 하고, 수행되던게 중간에 끊겨버리기도 하고. 특히 이것들을 전부 끌어안고 브라우징을 하면 무슨 재앙이 벌어지는지는...
  • PFN 2013/11/05 12:53 #

    아이패드2 쓰는중인데 얘도 램고자로 유명하죠;;
    웹브라우징 좀 하다보면 갑자기 브라우저가 펑 꺼지더라는..

    무슨 기기든 램은 좀 넉넉했으면 좋겠습니다.
  • 오오 2013/11/05 16:56 #

    아무리 넉넉해도 부족할 수 있는 것이 램 같은데...
  • 천하귀남 2013/11/05 13:09 #

    뭐 그래도 램 넉넉하다고 제조사와 통신사가 프리로드앱 왕창 올려 3G메모리도 1G잔여가 안되는 비극도 생기니까요.
    더군다나 이런 프리로드앱은 아예 처음부터 작정하고 구형기기 고려안하고 인터페이스 전체를 이미지로 만들어대 메모리 펑펑쓰는 놈도 있으니...

    넥서스4도 첫부팅시 메모리는 시스템 포함해 500M수준이라 총2기가중 1.5기가남는데 이정도면 충분하다고 봅니다. 웹브라우저를 제외하면 메모리사용 1G넘기는 앱은 그 앱이 문제겠지요.
  • 오오 2013/11/05 16:58 #

    발적화로 인해 다짜고짜 램 올리면 구기종에서 안돌아가는 앱이 수두룩할 것 같아요. 물론 그 이전에 리젝을 당할지도...
  • 지니 2013/11/05 15:49 #

    대부분의 로우 메모리 워닝은 앱 제작을 발로 해서라는거. 하지만 램을 많이 넣어서 강제로라도 유지를 해줬으면 하는 바램도 있습니다. 더하여 웹 브라우징시 램 적은건 좀 치명적 (...)
  • 오오 2013/11/05 16:50 #

    슈퍼갑 애플님은 너님의 발적화 따위는 고려하지 않습니다...!?
    사실 워닝까지는 일반적이고 그 다음 뻑나는 것이 발적화의 정수죠.
    수능 마무리 준비 잘 하시길...
  • 나인테일 2013/11/05 17:21 #

    매버릭스의 app nap과 메모리 압축 등의 기술은 ios7에는 이미 적용이 되었으려나요.

    저거 덕분인지 매버릭스가 산사자보다 훨씬 빠르고 쾌적하게 돌긴 하더군요.
  • 오오 2013/11/06 05:43 #

    app nap은 멀티태스킹과 좀 유사한 면이 있으려나...
    사실 디바이스 켜질때(시간 확인 같은 것)를 노려서 가동되거나 뭐 그런 구조일 것입니다.
    메모리 압축은 적용 안되었을 거에요.
    추후 될지도 모르지만...
  • 긁적 2013/11/05 19:49 #

    뭐 그렇죠... 딱히 문제라고 보긴 어려운데 아쉽긴 아쉬운.. ㅠ.ㅠ..
  • 오오 2013/11/06 05:43 #

    근데 아쉬워도 사고싶게 만드는 것은 대체...
  • 긁적 2013/11/06 14:15 #

    저도 아이패드3 쓰는데 지를까 고민중임돠. ㅋㅋㅋ
※ 로그인 사용자만 덧글을 남길 수 있습니다.