xfs가 ext3보다 매우 느리다?

amorette의 이미지

평소 무난히 ext3를 사용해왔습니다.
포맷할 일이 생겨서 kldp 에서 파일시스템에 관해 찾아보다가 xfs 를 사용하기로 마음먹었습니다.
(xfs가 좋다는 평이 많더라구요. 한번 써보고 튜닝도 해봐야지하고 생각하고 있었습니다)

슬렉웨어 설치가 무척 오래걸리는 느낌이 들었습니다.
그리고 왠지 모를 답답함과 함께 이것저것 패키지를 설치하다가 문득, time tar xf .....tar.gz 을 때려넣으니
18초가 나오더라구요.
곧장 ext3인 파티션으로 가서 같은 명령을 입력해넣었더니 1초가 나오는겁니다 (하늘이시여!!

랩탑에 slackware 12.2 설치해서 사용합니다.

한 디스크를 나눠서,
메인 파티션은 xfs에 168G 중에 5.6G 사용중인 상태였고
부 파티션은 ext3에 61G 중에 42G 사용중인 상태였습니다.
파티션 크기 때문에 이렇게 큰 차이를 얻는 건 아닌 것 같고...

# bonnie++ -u bonnie:bonnie -d a/b -s 3960m -m amorette -n 8:1000:8:16

이렇게 명령 내려서,

[ XFS ]

Version 1.03d ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP /sec %CP
amorette 3960M 47863 84 48329 7 18791 4 47938 84 49036 8 203.3 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
8:1000:8/16 330 2 11470 8 276 1 363 3 11699 16 105 0
amorette,3690M,47863,84,48329,7,18791,4,47938,84,49036,8,203.3,0,8:1000:8/16,330,2,11470,8,276,1,363,3,11699,16,105,0

[ EXT3 ]

Version 1.03d ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
amorette 3690M 26011 48 27545 6 12295 2 31678 56 31770 5 188.0 0
------Sequential Create------ --------Random Create--------
-Create-- --READ--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
8:1000:8:16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
amorette,3960M,26011,48,27545,6,12295,2,31678,56,31770,5,188.0,0,8:1000:8/16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++

이렇게 나왔습니다.

+++++ 는 오류가나거나 500ms 보다 더 짧게 걸려서 정확성을 보장 못할때 표기된다고 나와있네요,
부파티션이 16G 남은 상태에 8:1000:8:16 으로 주면 넘치거나 했던건 아니겠죠?

옴마니밤매홈 나무아미타불 할렐루야 ㅜㅜ
왜 이렇게 되는건가요..

xfs가 랩탑에는 적당하지 못한걸까요 (..)
저에게 자비를 배풀어주세요 (_ _)..

sjyun99의 이미지

저도 그동안 믿고 쓰던 XFS가 이상하게 느리다고 생각하고 있던 참입니다.
특히 상당히 큰 source tree를 지우거나 하는 경우 이렇게 느릴까 싶을 정도입니다.
벤치마크의 결과가 제가 느끼는 EXT3 등과 비교 경험과는 다른 것 같습니다.
혹시 XFS의 tunning point가 있나요?

ranorian의 이미지

작은파일에서 상당히 성능이 안나온다고 들었긴 했는데 그래도 그만큼 느릴까 싶어서 사용해 봤는데..
생각보다 많이 느렸습니다. 아치리눅스를 사용하는데 단순히 패키지정보를 업데이트하고 검색하거나
설치하는데 기존에 reiserfs 나 ext3 때보다 확연히 느린 모습을 보여주더군요.

결국 그 딜레이를 참지 못하고 밀고 ext3으로 복귀하였습니다.
지금은 ext4 를 눈여겨 보고 있는데 아직은 안정성이 확실히 좋다고 소문난게
아니라서 조용히 눈치보면서 안정성 여부를 판단중에 있습니다.

amorette의 이미지

ext3에서 xfs로 옮겼다가 확실히 성능이 떨어진 분이 생각외로 많네요.
무언가 놓치고 있다는 생각은 드는데, 귀찮기도 해서... 결국 ext3로 복귀했습니다.

sjyun99님 말씀처럼,
파일을 여러개 다룰 때 특히 느려지는 것이 확실히 느껴지는데요.

하지만 아무래도 제 노트북에서 xfs 써서 느려진 원인도 확실히 모르고,
xfs로 속도 향상을 못해보았으니 제목에 [완료] 태그는 붙이지 않겠습니다.

koseph의 이미지

만약 기본 옵션 그러니까.....

mkfs.xfs -Lblah /dev/blah

형식으로 포맷하고 defaults 옵션으로 mount 해서 사용하셨다면 XFS의 장점을 경험하지 못합니다.

http://kldp.org/node/100387

에서도 다루었던 내용이긴 한데요. 설명은 없었습니다.

mkfs.xfs -f -b size=512 -l size=32768b -d agcount=1 -n size=16k /dev/sdb1 ;\
mount -o noatime,nodiratime,logbufs=8 /dev/sdb1 /mnt/test

간단하게 추가하도록 하겠습니다.

mkfs.xfs

-b size=512: 요녀석은 파일시스템의 블럭사이즈를 512바이트로 정하는 것이구요. 사용하는 파일의 크기에 따라 탄력있게 정해서 쓰시면 되겠습니다. 물론 이 블럭사이즈 역시 성능에 영향을 줍니다.
-l size=32768b: 저널링 로그의 크기를 32768 블럭 사용하겠다는 것입니다. 저널링 파일시스템에서 저널링 로그 크기 역시 파일시스템의 성능에 영향을 줍니다. 로그의 크기는 32m로 적으면 32Mb가 됩니다. 자세한 것은 man page....
-d agcount=1: XFS에 있는 allocation group을 하나만 할당하겠다는 것입니다. 기본값은 아마 4Gb당 ag 하나를 할당할 것입니다. agcount=1은 실제에서는 사용하면 안되는 옵션입니다. 혹시나 ag 블럭이 깨지면 파일시스템 전체가 날아갈 수 있으니까요.

mount option
noatime: no access time, access time을 기록하지 않겠다는 것이죠. 다른 파일시스템에서도 이 옵션은 유용합니다.
nodiratime: no dir access time, dir access time을 기록하지 않겠다는 것이죠. noatime과 마찬가지입니다.
logbufs=8: 이것은 XFS에서 쓰이는 옵션으로 로그용 버퍼의 갯수를 할당합니다. 요즘은 대개 메모리가 크니까 8정도 주면 됩니다. 2,4,8로 값을 정해 쓸 수 있습니다.

이것 외에도 튜닝 옵션은 여러가지 있습니다. 자세한 것은 man page 참조하시구요.

이러한 튜닝 옵션을 잘 이용하면 작은 파일에서도 XFS의 느린 퍼포먼스는 많이 개선이 됩니다.

2008년 2월에 제가 시험한 결과의 일부를 보면,

$ ./bonnie++ -d /var/tmp -s 2048:1024 -n 100 -r 1024

XFS

Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
localhost.loc 2G:1k 104211 76 62023 15 27057 11 48741 45 50405 12 221.3 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
100 606 13 7605 52 530 17 580 15 291 5 92 4
localhost.localdomain,2G:1k,104211,76,62023,15,27057,11,48741,45,50405,12,221.3,1,100,606,13,7605,52,530,17,580,15,291,5,92,4

EXT3

Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
localhost.loc 2G:1k 47457 67 52709 19 21626 10 37917 39 40486 10 214.0 2
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
100 54849 98 +++++ +++ 75998 83 54506 99 +++++ +++ 87924 99
localhost.localdomain,2G:1k,47457,67,52709,19,21626,10,37917,39,40486,10,214.0,2,100,54849,98,+++++,+++,75998,83,54506,99,+++++,+++,87924,99

전송률에서는 XFS가 앞서고.... 파일을 생성하고 삭제하는 데서는 ext3가 앞서는 것을 볼 수 있습니다.

중요한 것은....

2002년에 XFS와 ext3의 성능 테스트에서 XFS가 ext3보다 여러가지 면에서 상당한 우세를 보였는데....

최근에 제가 해본 실험에서도 ext3의 파일, 디렉토리 갯수의 제한과 한 디렉토리에 많은 파일을 생성하면 심하게 느려지는 현상 말고는 성능이 예전에 비해 많이 개선이 되었다는 것입니다.

아직까지 확실히 그렇다라고 결론은 내리지 못했지만 지금까지 나온 결과를 보면 그렇습니다.
---------------------------------
There's always another way, dear.

---------------------------------
There's always another way, dear.

amorette의 이미지

음 그렇군요.

설치할때 그냥 메뉴 항목에서 xfs로 선택했는데,
아무래도 기본 옵션으로 포맷했을 것 같습니다.

이번 주말에 자세히 보고 xfs 테스트를 다시 해봐야 겠습니다.

감사합니다.

댓글 달기

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