IDL PATH 설정에 따른 시동 시간

“내 IDL은 유독 시동 시간이 오래 걸리는 것 같다.”

이런 느낌을 받았던 적이 있으신가요? 컴퓨터는 제법 괜찮은 사양인데, 일단 시동만 되고 나면 꽤 빠르게 돌아가는데, IDL 시동이 유독 오래 걸린다고 생각이 되시나요? 이런 경우 IDL의 PATH 설정을 검토해 보실 필요가 있습니다.  라이선스 파일에 문제가 있거나 라이선스 서버에 접속이 안되는 경우에는 아예 IDL이 “라이선스가 이상합니다”라는 메시지를 내고 맙니다. IDL이 한참 있다가 정상적으로 작동하는 경우라면 다음 상황을 점검해 보세요.

IDL이 시작될 때 하는 일 

IDL이 시작될 때에는, IDL PATH로 설정된 디렉토리들을 모두 검색하여, 경로 내에 있는 파일들의 위치를 모두 확보해 둡니다. ‘*.pro’ 파일이나 ‘*.sav’ 파일 외에도 모든 파일의 위치를 가지고 있습니다.  경로 앞에 체크를 한 경우 또는 설정파일에서 경로 앞에 + (더하기) 기호가 붙어 있는 경우라면, 해당 폴더의 아래에 위치한 모든 다단계 하위 경로를 다 뒤져 놓습니다. 필요한 경로라면 이렇게 검색을 해 두어야 합니다. 이렇게 함으로써 IDL이 한번 시작되고 난 후에는 해당 경로 안에 있는 어떤 파일이든지 특별한 설정 없이 찾아낼 수 있습니다. 프로그램을 실행하는 데 필요한 라이브러리들은 당연히 이렇게 PATH에 등록해 두어야 합니다.

그렇지만 주의해야 합니다 

경로 설정에서 하위 폴더를 모두 포함하는 옵션, 즉, 환경설정에서 체크를 하거나 설정 파일에서 경로에 + 기호를 붙인 경우, IDL을 시작할 때(또는 .reset 을 실행할 때) IDL은 하드디스크에서 해당 폴더들을 모두 검색하는 수고를 합니다. ‘한방에 경로 설정을 끝내 보자’는 생각으로 윈도우즈의 ‘C:\’ 폴더를 경로로 설정할 때 ‘체크’를 하거나, 리눅스의 최상위 폴더 ‘/’ 를 설정하고 좌측에 + 기호를 붙인다면, IDL은 시작할 때마다 해당 하드디스크를 모두 훑어야 합니다. SSD라면 조금 빠르겠지만, 하드디스크 용량이 클 수록, 파일의 개수가 많을 수록 IDL의 시동 시간은 오래 걸립니다.

C:\ 와 그 하위디렉토리를 모두 경로에 추가하는 모험

<IDL_DEFAULT> 경로는 IDL의 배포판에 있는 라이브러리, LIB 폴더와 예제 프로그램들이 있는 examples 폴더, 그리고 그 하위폴더들을 가리키는 설정입니다. 삭제할 수는 있는데, 절대 그러면 안됩니다.  LIB 폴더 없이는 mean 함수도 사용할 수 없습니다. 거의 아무것도 못합니다. 그 아래쪽은 제가 실험 삼아 만든 설정인데, IDLAddon은 제가 평소에 IDL 관련 라이브러리들(Coyote 라이브러리와 Astronomy 라이브러리, 그리고 자주 사용하는 프로그램들)을 모아 놓는 곳입니다. 그러므로 이 곳이 경로로 설정되어야 함은 당연합니다. 특히 IDLAddon 폴더 아래에 coyote 폴더나 astron 폴더가 있기 때문에 하위 폴더를 모두 스캔하는 체크 박스 선택도 당연한 것입니다.

문제는 저 ‘C:\’ 와 좌측의 체크 박스죠. “복잡하게 일일이 설정하느니 한방에 하드디스크 전체!” 이라는 기대로 최상위 폴더와 그 아래 모두를 설정해 버리면, IDL이 시작될 때마다 하드디스크를 모두 뒤져야 합니다. 오래 걸립니다. 다행히도 1TB 정도 되는 평범한 Windows 운영체제의 SSD는 3분~5분 정도면 경로 Full Scan을 마치는 것 같습니다(HDD라면 훨씬 오래 걸리겠지요). 그렇지만 이나마도 의미 없는 시간입니다. 더 위험한 것은, 스케줄러(crontab 등)에 의해 주기적으로 실행되는 경우, 시동 시간이 주기보다 길어지면서 발생할 수 있는 문제입니다. 정작 프로그램은 시작도 못해보고 다음 실행 주기가 다가오는 위험을 감수할 필요는 없습니다. 개인 PC는 몇분~몇십분 기다리면 될지 모르겠지만, 대형 서버에서 ‘/’ 폴더 아래를 모두 경로로 잡아 버리면… 제발 그러지 마세요.

IDL이 75%의 CPU를 사용하고 있는데, 그냥 PATH 찾는 중일 뿐입니다. 아직 IDL은 시작도 못했습니다.

비슷한 맥락에서…

요즘은 네트워크 드라이브를 연결하여 쓰는 경우도 많이 있습니다. 네트워크 드라이브 연결이 끊겼다든지, 매우 느리게 연결되어 있는 경우 IDL의 시동이 터무니없이 오래 걸릴 수 있습니다. 이 부분도 상황에 따라서는 검토해 보아야 합니다. Windows에서 테스트한 바에 의하면, 외장 HDD나 USB 메모리 스틱 같은 경로를 설정한 후, 외장 장치 없이 IDL을 시동했을 때, IDL은 해당 경로를 바로 포기하는 것 같습니다. 시동 시간에 지장은 없어 보입니다.

경로설정은 어디에서 하나요?

IDL Workbench를 사용하는 경우, 메뉴에서 창>환경설정을 실행하고 열리는 창의 좌측 트리메뉴에서 IDL/경로 를 선택하면 IDL PATH 설정을 할 수 있습니다. 리눅스나 맥에서 설정 파일을 직접 수정하는 경우라면 일반적으로 개인 홈 폴더 아래 .idl/idl/pref-10-idl_버전-unix/idl.pref 파일을 손보게 됩니다. 체크 박스에 해당하는 의미는 + (더하기) 기호가 담당합니다. (그림을 참고 하세요)

설정 파일에서 IDL_PATH 만 설정한 상황입니다. :+/ 를 추가하면 위험하고 불편하다는 것이 이 글의 주제입니다.

이 외에도 Linux/Unix의 셸 환경 설정 파일(예를 들면 BASH 환경인 .bashrc 같은)에 IDL_PATH 가 설정되어 있을 수도 있습니다. 함께 사용하는 유닉스 서버 같은 경우에는 처음에 다른 사용자의 셸 설정을 베껴오는 경우도 많으므로, 이런 부분은 한번 살펴 보는 것이 좋습니다. 이유없이 누구는 되고, 누구는 안된다는 얘기의 속 사정은 대부분 이 문제였다는 것이 제 경험입니다. 또한 Windows 역시 시스템 속성의 환경 변수 설정을 통해 IDL_PATH를 잡을 수도 있습니다. 저는 이 방법을 선호하지 않지만, 그리고 이 방식으로 IDL_PATH를 설정하는 사례는 여태껏 극히 드물게 보았지만, 누군가 사용하던 PC를 그대로 물려 받아 쓰는 경우, 뭔가 경로가 꼬인 것 같다면, 이 부분도 한번 살펴볼 필요는 있습니다.

지금 내 IDL이 경로 설정이 원하는 대로 되어 있는 것인지 확인해 보고 싶은 경우라면, IDL에서 다음을 실행해 보십시오.

IDL> print, !PATH

!PATH 시스템 변수는 IDL의 PATH로 등록된 폴더들을 기억합니다. 생각보다 많이 출력될 수 있는데, 결국은 LIB 폴더나 Examples 폴더, 그리고 직접 설정한 폴더들과 그 하위 폴더들일 것입니다. “어, 이상한데? 얘는 어디서 튀어 나온 폴더냐?” 라는 의심이 된다면, 앞에 말씀 드린 다양한 경로 설정 방법들을 조사해 보아야 합니다.