프로세스가 cpu time을 모두 먹어버립니다...

익명 사용자의 이미지

지금 검색엔진을 만들고 있는 중입니다.

색인과정 프로세스가 cpu 사용율이 99%가 나옵니다.
그리고 99%가 나오는 부분은 file 을 작성할때 그렇게 나옵니다.
따라서 아무런 작업도 할 수 가 없겠죠..
(터미널에서 a 를 입력하면 한 1~2분쯤 지나야 찍힙니다..)

file IO를 최대한 줄인다고 줄여도 작업시간 3~4시간동안
20k 정도의file을 약 200만개 정도 작성해야 하기때문에
file을 쓰고 있는 시간동안에는 다른 아무런 작업이 불가능해 집니다.

이부분을 해결할 수가 없을까요?

익명 사용자의 이미지

싱글 시피유에 eide방식인가요?

그렇다면 disk쪽으로 io가 많이 몰린다면..
부하가 상당합니다. (eide방식은 io가 일어 날때,
cpu가 io를관장 하기 때문에, 부담이 큽니다.)
하드웨어 업그레이드가 필요 합니다.
(듀얼로 하시던지, scsi로 바꾸시면 훨씬
부드럽게 움직일 껍니다.)

아니면,, 시스템 자원을 잠시 다른 프로스세에게
양보 할수 있는 sleep을 주시면 작업 시간은
좀더 걸리겠지만.. 다른 시피유가 자원을 할당 받을수 있어서
멀티 태스킹이 가능 할껍니다.

초단위 슬립은 너무 길테니, 나노슬립을 이용해서
작업 단위마다 약간씩 쉬어주면 될듯 싶네요.

익명 사용자의 이미지

시스템이 펜티움 2 400 듀얼 씨피유구요..
하드는 스카시 어레이를 사용하고 있습니다.

그니까 서버 이름이 컴팩 폴로라이언트 3000이거든요...

흘... 답변 잘 고맙습니다.
한번 시도해보죠 ^^

antz의 이미지

저도 검색엔진 관련 일을 하고 있습니다.
전에는 다른일을 하다 어찌어찌 되어 검색엔진을 만지게 되었습니다.

인덱싱 부분에서 많이 로드가 걸리더군요.
그래서 fsync, fflush등으로 로드를 죽이려니까.
인덱싱 시간이 장난이 아니네요.
fsync, fflush를 안쓰면 5시간 정도 걸리는데...
시간을 추정하니 60시간 이상으로 나오는 군요. ㅡㅡ;;;
(로드는 많이 줄어듭니다.)

다시 fsync를 풀었는데...
방법을 고심하고 있습니다.

검색엔진을 공부하기에 좋은 싸이트, 책, 정보등이
있으시면 부탁드리겠습니다.

감사합니다.

kihlle의 이미지

비동기 파일입출력은 국내의 문서에서 검색해서 자료를 찾을수 없는
주제이기도 합니다. 어쨌든 aio_read(), aio_write() 등의 함수인데
플랫폼에 따라 조금씩 다르다는 점이 코딩을 약간 까다롭게 하지만
비동기큐에다 읽고쓸 버퍼를 집어넣고 운영체제가 관리한다는 점에서
쓸만합니다.

"I/O wait상태로 CPU 99%를 점유하는 문제는 대부분 해결할수 있습니다."

리눅스에서는 librt.so 를 통하여 구현되고 그외의 유닉스시스템들은
시스템콜로써 구현되기도 합니다. 자세한 것은 aio.h 를 참조하시거나
ISO9945-1 표준, SGI의 AsynchI/O 문서를 참조하시면 되겠습니다.

개인적인 경험으로 리눅스 특히 커널 2.4.x 의 구버젼(?) 커널에서 특히
ext3 파일시스템에서의 사용은 엥간하면 하지 않으시는 것이 좋을듯합니다.
간혹가다 시스템 자체가 크래시되는 경우를 여러번 봤습니다.

homeless

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.