프로세스 20개 띄우느라 걸리는 시간, (아마도 디스크에 있을) 10MB짜리 파일을 프로세스 20개가 랜덤 액세스하겠다고 난리피우는 시간 등을 고려하면 과연 어떨까요.
설령 이득이 있다고 해도 몇백 밀리세컨드를 넘지 않을텐데 그거 얻겠다고 프로세스 20개 실행시키는 배치 스크립트 만드는 데 걸리는 시간은...?
직접 해보고 초시계로 재 봐야 아는 일이라지만, 제 생각에는 영 남는 장사가 못 될 거 같네요. 과연 초시계로 잴 수 있을 만큼 시간 차이가 날지도 잘 모르겠고요.
환경은 fedora linux 64bit 이고요.
10MB 정도 되는 문자 데이터에서 필요로 하는 정규표현식을 검출하고자 합니다.
10MB 사이즈가 커서 이것은 512kB 로 20개 만들어서 검사하는게 나을까요?
아니면 통짜로 10MB 를 할당받아서 검사하는게 빠를까요?
성능상 어떤게 더 나은지 좀 알려주세요.
고수님들의 조언 부탁드립니다.
같은 말 반복이지만, 일단 10MB 데이터를 전체에 대해서 작업한 후 성능개선이 필요한지 판단해 보시기 바랍니다.
병렬처리가 필요하더라도 나누는 개수는 CPU 수에 의존적입니다. 딱 CPU 개수 또는 그보다 약간 많은 정도면 됩니다.
나누는 방법은 데이터의 형태나 하려는 작업의 형태에 대한 정보가 없는 한, 대답하기 애매합니다.
일단 단일처리로 구현한 후 필요하다면, 그 구현물을 가지고 질문해 보시기 바랍니다.
요즘 컴퓨팅 환경에서 10MB 는 문제가 될 만한
요즘 컴퓨팅 환경에서 10MB 는 문제가 될 만한 크기가 아닐것 같은데요..
엄청 느린 환경이라든가, 엄청 많은 파일이라든가, 엄청 복잡한 패턴 같은 특수한 환경에서나 문제가 될 것 같습니다.
지금 환경에서 시간이 얼마 걸리는데, 얼마로 줄이는게 목표다라는 것이 정해져야 앞으로의 방향이 나올 것 같습니다.
나누면 병렬처리가 가능해집니다 프로세스하나로 10mb
나누면 병렬처리가 가능해집니다
프로세스하나로 10mb 처리하는것보다
20개의 프로세스로 각각 512kb 동시에 처리하는것이 빠를수있습니다
글쎄...
프로세스 20개 띄우느라 걸리는 시간, (아마도 디스크에 있을) 10MB짜리 파일을 프로세스 20개가 랜덤 액세스하겠다고 난리피우는 시간 등을 고려하면 과연 어떨까요.
설령 이득이 있다고 해도 몇백 밀리세컨드를 넘지 않을텐데 그거 얻겠다고 프로세스 20개 실행시키는 배치 스크립트 만드는 데 걸리는 시간은...?
직접 해보고 초시계로 재 봐야 아는 일이라지만, 제 생각에는 영 남는 장사가 못 될 거 같네요. 과연 초시계로 잴 수 있을 만큼 시간 차이가 날지도 잘 모르겠고요.
어짜피 단 한개의 10mb짜리 파일 한개를 어떻게
어짜피 단 한개의 10mb짜리 파일 한개를 어떻게 처리할것인가를
고민할것이면 게시판에 이런글을 올리는것자체가 무의미하겠죠
반복적으로 10mb파일을 지속적으로 처리해야하는 상황이면
당연히 프로세스를계속 실행시켜놓고 입력을 받아처리를 하게해야합니다 이건 10mb파일을 한번에처리하더라도 마친가지입니다
원글 어디에도 쉘스크립트로 작성할것이라는 얘기는 없습니다
잘 읽어보고 댓글답시다
...
512KB로 나눴을 때 딱 나누는 지점에 정규식이 걸리면 어떻게 처리하실 건가요?
일단 질문과 무관한 답글이지만, 이게 댓글 논란의
일단 질문과 무관한 답글이지만, 이게 댓글 논란의 정답이네요.
정규식을 처리 하기 위해 문자 데이터를 자른다는 것은 사실상 불가능한 답입니다.
소곤소곤
이론적으로는 그렇습니다만 현실적으로는
이론적으로는 그렇습니다만 현실적으로는 자를수있습니다
가령 단어나 라인단위의 정규식을 표현한다면
정확히 512kb는 아니더라도 최대한 근접하게 자를수있습니다
(효용성에 대해서 상당히 회의적이긴 하지만...)
(효용성에 대해서 상당히 회의적이긴 하지만...) 그래도 잘라서 하겠다고 결정했다면,
경계 부분의 문제는
라인단위가 아닌 경우라 하더라도,
해당 패턴이 matching하는 최대 길이만큼
overlap을 둠으로써 쉽게 해결할 수 있습니다.
물론 최대길이가 예측불가하다면 사용할 수 없겠지만요.
환경은 fedora linux 64bit
같은 말 반복이지만, 일단 10MB 데이터를 전체에 대해서 작업한 후 성능개선이 필요한지 판단해 보시기 바랍니다.
병렬처리가 필요하더라도 나누는 개수는 CPU 수에 의존적입니다. 딱 CPU 개수 또는 그보다 약간 많은 정도면 됩니다.
나누는 방법은 데이터의 형태나 하려는 작업의 형태에 대한 정보가 없는 한, 대답하기 애매합니다.
일단 단일처리로 구현한 후 필요하다면, 그 구현물을 가지고 질문해 보시기 바랍니다.
댓글 달기