[완료] gzip 으로 압축시 CPU 부하를 줄이고 싶습니다.

ssanighe의 이미지

안녕하세요.

60M 정도 되는 로그 파일은 압축하려는데
gzip 으로 압축할 시 순간적으로 CPU가 100% 가까이 치고 올라갑니다.

--fast 옵션으로 어느정도 부하가 줄여지기는 하는데, 그래도 너무 높네요.

CPU 가 60% 이상 올라가지 않았으면 좋겠습니다.

로그파일을 조금씩 읽어서 중간중간 sleep 해 가면서 하고 싶은데요, 시간은 오래걸려도 상관없거든요. CPU만 안올라 가면 됩니다.

혹시 dd -obs 옵션을 적용하면 가능한가요?

답변 부탁드릴께요..

감사합니다.

http://kldp.org/node/81538 로 이어져서 완료가 되었습니다.

Hyun의 이미지

프로세스의 우선순위를 나추면 되지 않을까요???

방법을 몰라도 답글을 달수 있었으면 좋겠군요...

ssanighe의 이미지

헛.. 그런의미는 아니었습니다:)

Hyun의 이미지

호홋... 수정하셨네요...
관리자 입장에선 하나다 씨퓨를 다 먹으면 다른 태스크 반응성이 떨어져서 점유율을 떨어뜨리려고 하지만... 씨퓨입장에선 해야 할 일이 있는데 놀고있을 순 없죠...

단순히 반응성을 생각한다면 스캐줄러 우선권을 낮추는 것이... 쉬울 듯... nice!

ssanighe의 이미지

단순히 CPU 점유율만을 낮추고 싶은 것이라서..
우선권을 낮추어도 다른 일이 없다면 100%를 다 사용해서 압축을 하겠죠?

Hyun의 이미지

왜 씨퓨 점유율을 낮추죠?? 이해가 안가는데...
씨퓨 온도가 너무 올라가나요?

ssanighe의 이미지

저희 시스템(상용)에서 CPU 가 올라가면 알람이 뜨게 되거든요.
알람이 뜨게되면, 장애로 보고가 되고..

익명사용자의 이미지

간단하게 stdin, stdout 조절만 해주면 될거 같은데, C로 짜봤습니다.

다른 언어가 더 간편할 수도 있겠네요. 40kb 마다 sleep 합니다.

cat /var/log/httpd-access.log | ./a.out | gzip > log.gz

이런 식으로 중간 파이프에 넣어서 사용하면 될겁니다.

#include <unistd.h>
 
#define	BUF_SIZE		1024*8
#define	LIMIT_COUNT		5
 
int
main(void)
{
        int r, count;
        char buf[BUF_SIZE];
 
        count = 0;
        while ((r = read(STDIN_FILENO, buf, BUF_SIZE)) > 0) {
                if (write(STDOUT_FILENO, buf, r) != r)
                        return (1);
 
                if (++count > LIMIT_COUNT) {
                        sleep(1);
                        count = 0;
                }
        }
 
        if (r < 0)
                return (1);
 
        return (0);
}

ssanighe의 이미지

감사합니다.

bash shell script 로 read의 양을 조절하는 방법은 없을까요?

alfalf의 이미지

쉘 스크립트를 이용한다면 아래와 같이 할 수 있겠네요.

while read line; do echo "${line}"; sleep 0.1; done &lt; logfile | gzip -c &gt; logfile.gz

'sleep' 명령 이후의 시간을 적절히 조절하시면 원하시는 결과를 얻으실 수 있을 것 같네요.
ssanighe의 이미지

감사합니다.

while 문 안에 read로 라인피드 까지 읽게되는군요.
한번에 읽는 양을 조절할 수도 있을까요?

cronex의 이미지

음 로그 파일이라는 것이 중간 변화가 없고 뒤에 내용추가만 되기 때문에
가능한 방법이겠군요.

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.