HP-UX

버퍼캐쉬....

 
김원태
기여자

버퍼캐쉬....

아래 질문한 사람인데요.... Disk IO률이 높아서..

말씀 드린바와 같이. dbc_*_pct 부분을 2/2에서.. 30/5로 SAM에서 작업했고... sysdef/kmtune 확인했습니다... 근데.. glance 확인결과.

buf가 7.8M free가 1.3G, Phy 2G ... buf는 움직일 생각을안하네요.

왜그런지 고수님들 답변좀 주세요..

dmesg 결과 입니다.맨밑에 한줄이 뜨는데.그게 원인인거 같기두 한데요...

Jun 11 13:00:27 vmunix: Memory Information:

Jun 11 13:00:27 vmunix: physical page size = 4096 bytes, logical page size = 4096 bytes

Jun 11 13:00:27 vmunix: Physical: 2097152 Kbytes, lockable: 1867380 Kbytes, available: 1903800 Kbytes

Jun 11 13:00:27 vmunix: Using 1022 buffers containing 7968 Kbytes of memory.

4 응답 4
이태곤
중학생

버퍼캐쉬....

dbc_max_pct = 20

dbc_min_pct = 2



상기와 같이 커널값을 조절하셨다면 buffer cache을 메모리의

2 ~ 20%을 사용하라는 의미입니다. (전체 physical memory다 2G이면

40M ~ 400M)



위의 설정으로 항상 max인 20%을 사용하는것이 아니라 디스크의 I/O가 늘어감에 따라 최소 2%에서 점점 늘어나게 됩니다. 하지만 여유 메모리가 부족하다면 20%에 도달 하지 않을수 있습니다.



디스크 I/O을 줄이는것을 방편으로 buffer cache량을 늘이는것으로 정하셨다면 dbc_min_pct = 20 으로 min 값을 설정하신는 것이 바로 알수 있는 방법같습니다.(물론 영구적으로 20하는것은 바람직하지 않습니다.)

이렇게 설정하셨는데 디스크 I/O에 변화가 없다면 dbc 값을 2/20설정하시고 다른 방법을 알아보시는 편이 좋을듯합니다.



그럼 좋은하루되십시오





김원태
기여자

버퍼캐쉬....

죄송요.. 처음엔 2/2를 20/2 그래도 glance결과는 7.8이구요..

30/5 로 다시 변경을 해도.. buf는 항상7.8 Free는보통 1G-1.5G정도구요... 님 말씀대로라면.. min이 2라해두 30이상은 올라와야 맏는거 아닌가요 dbc_*_pct가 인식이 안돼는거 같은데요..강제로 잡는 방법이나.... buf가 변경안돼게 하는 뭔가가 있는거 같은데요... ~~~~~



Parameter Value

===============================================================================

NSTRBLKSCHED 2

NSTREVENT 50

NSTRPUSH 16

NSTRSCHED 0

STRCTLSZ 1024

STRMSGSZ 65535

acctresume 4

acctsuspend 2

aio_listio_max 256

aio_max_ops 2048

aio_physmem_pct 10

aio_prio_delta_max 20

allocate_fs_swapmap 0

alwaysdump 0

bootspinlocks 256

bufcache_hash_locks 128

bufpages (NPROC*3)

chanq_hash_locks 256

create_fastlinks 0

dbc_max_pct 20

dbc_min_pct 5

default_disk_ir 0

desfree 0

dnlc_hash_locks 64

dontdump 0

dskless_node 0

dst 1

eisa_io_estimate 0x300

eqmemsize 15

fcp_large_config 0

file_pad 10

fs_async 0

ftable_hash_locks 64

hdlpreg_hash_locks 128

hfs_max_ra_blocks 8

hfs_ra_per_disk 64

hpux_aes_override 0

initmodmax 50

io_ports_hash_locks 64

iomemsize 40000

km_disable 0

ksi_alloc_max (NPROC*8)

ksi_send_max 32

lotsfree 0

max_async_ports 50

max_fcp_reqs 512

max_mem_window 0

max_thread_proc 256

maxdsiz 0X10000000

maxdsiz_64bit 0X0000003FFBFFFFFFF

maxfiles 2048

maxfiles_lim 2048

maxqueuetime 0

maxssiz 0x00800000

maxssiz_64bit 0x00800000

maxswapchunks 4096

maxtsiz 0x04000000

maxtsiz_64bit 0x0000000040000000

maxuprc ((NPROC*9)/10)

maxusers 200

maxvgs 80

mesg 1

minfree 0

modstrmax 500

msgmap (MSGTQL+2)

msgmax 32768

msgmnb 65535

msgmni (NPROC)

msgseg (MSGTQL*4)

msgssz 128

msgtql (NPROC*10)

nbuf 0

ncallout 2064

ncdnode 150

nclist (100+16*MAXUSERS)

ncsize (NINODE+VX_NCSIZE)

ndilbuffers 30

netisr_priority -1

netmemmax 0

nfile (15*NPROC+2048)

nflocks (NPROC)

nhtbl_scale 0

ninode (8*NPROC+2048)

nkthread 2048

nni 2

no_lvm_disks 0

nproc ((MAXUSERS*3)+64)

npty 60

nstrpty 60

nstrtel (MAXUSERS)

nswapdev 25

nswapfs 10

nsysmap ((NPROC)>800?2*(NPROC):800)

nsysmap64 ((NPROC)>800?2*(NPROC):800)

num_tachyon_adapters 0

o_sync_is_o_dsync 0

page_text_to_local 0

pfdat_hash_locks 128

public_shlibs 1

region_hash_locks 128

remote_nfs_swap 0

rtsched_numpri 32

scroll_lines 100

scsi_maxphys 1048576

sema 1

semaem 16384

semmap (SEMMNI+2)

semmni (NPROC*5)

semmns (SEMMNI*2)

semmnu (NPROC-4)

semume 64

semvmx 32768

sendfile_max 0

shmem 1

shmmax 0X40000000

shmmni 512

shmseg 32

st_ats_enabled 1

st_fail_overruns 0

st_large_recs 0

streampipes 0

swapmem_on 1

swchunk 2048

sysv_hash_locks 128

tcphashsz 0

timeslice 1

timezone 420

unlockable_mem (MAXUSERS*10)

vnode_cd_hash_locks 128

vnode_hash_locks 128

vps_ceiling 16

vps_chatr_ceiling 65536

vps_pagesize 4

vx_maxlink 32767

vx_ncsize 1024

vx_ninode 0

vx_noifree 0

vxfs_max_ra_kbytes 1024

vxfs_ra_per_disk 1024
이태곤
중학생

버퍼캐쉬....

강제로 특정 size 만큼 주고자 한다면 위에서 말씀드린봐와 같이

min 값과 max값을 같게 주시면 됩니다,



dbc_mac_pct = 20

dbc_min_pct = 20



free 메모리가 여유가 있고 디스크 I/O가 빈번한데 buffer cache 가 올라 가지 않는게 이상하네요.



그럼 좋은 하루되십시오.
고광태
중학생

버퍼캐쉬....

자료첨부합니다. 참조하시길..



현재 결론은 디스크쪽에 유틸이 값이 높게 나온다는것이죠?



아래의 소스로 시스템 전체를 다시 모니터링해보십시오..



(소스를 설명하자면

시스템의 cpu, memory , disk, 부하가 많이 걸리는 process 등을 체크하는 소스입니다.)



--------------------------------------------------------------------------------------

#!/usr/bin/ksh

while true

do

uptime >> /var/testlog/`hostname`_vmstat_`date +%y%m%d`.log

sar -o /var/testlog/sarfile 2 5

sar -Af /var/testlog/sarfile >> /var/testlog/`hostname`_sar_`date +%y%m%d`.log

swapinfo -mta >> /var/testlog/`hostname`_swap_`date +%y%m%d`.log

sar -d 2 5 >> /var/testlog/`hostname`_disk_`date +%y%m%d`.log

UNIX95= ps -e -o "user,vsz,pcpu,pid,ppid,args"|sort -rnk2 >>/var/testlog/`hostname`_cpu_`date +%y%m%d`.log

sleep 30

done

---------------------------------------------------------------------------------------

로그는 /var/testlog 디렉토리에 파일이 생성됩니다.





그리고 커널값중 maxdsize 값을 maxdsize_64bit 하고 같이 맞추어주세요..보통 1~2G 정도면 좋을것 같네요..

나머지는 시스템 전체적으로 모니터링후에 또 보는 것이 좋을듯하네요..



참조하세요.