>

버퍼에 어떤 파일이로드되어 있는지 확인하고 싶습니다. 방금 언급 한 버퍼 및 캐시는 free -m 를 실행할 때 나타나는 것입니다.  명령 :

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7800       7671        128          0        291        724
-/+ buffers/cache:       6655       1144
Swap:         5823        613       5210

  • 답변 # 1

    linux-ftools 살펴보기 . 이 도구 모음은 버퍼와 캐시를 분석하도록 특별히 설계되었습니다. 다음 도구가 포함되어 있습니다.

    fincore
    $ fincore [options] files...
      --pages=false      Do not print pages
      --summarize        When comparing multiple files, print a summary report
      --only-cached      Only print stats for files that are actually in cache.
    root@xxxxxx:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached * 
    stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 
    stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 
    stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 
    stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 
    ...
    
    

    참고 :위 출력 예에서 /var/lib/mysql/blogindex 디렉토리의 모든 파일 캐시되고있는가 표시됩니다. 이 경우 CLUSTER_LOG_*.MYI 라는 여러 파일이 있습니다. .

    fadvise
    SYNTAX: filename mode [offset] [,length]
    Where mode can be:
      POSIX_FADV_NORMAL       No further special treatment.  
      POSIX_FADV_RANDOM       Expect random page references.  
      POSIX_FADV_SEQUENTIAL   Expect sequential page references.  
      POSIX_FADV_WILLNEED     Will need these pages.  
      POSIX_FADV_DONTNEED     Dont need these pages.  
      POSIX_FADV_NOREUSE      Data will be accessed once.  
    Allows an application to to tell the kernel how it expects to use a file handle,
    so that the kernel can choose appropriate read-ahead and caching techniques for
    access to the corresponding file. This is similar to the POSIX version of the
    madvise system call, but for file access instead of memory access. The
    sys_fadvise64() function is obsolete and corresponds to a broken glibc API,
    sys_fadvise64_64() is the fixed version. The following are the values for the
    advice parameter:
    FADV_NORMAL
    No special treatment.
    FADV_RANDOM
    Expect page references in random order.
    FADV_SEQUENTIAL
    Expect page references in sequential order.
    FADV_WILLNEED
    Expect access in the near future.
    FADV_DONTNEED
    Do not expect access in the near future. Subsequent access of pages in this
    range will succeed, but will result either in reloading of the memory contents
    from the underlying mapped file or zero-fill-in-demand pages for mappings
    without an underlying file.
    FADV_NOREUSE
    Access data only once.
    
    
    낙상
    SYNTAX: fallocate file length
    fallocate() allows the caller to directly manipulate the allocated disk space
    for the file referred to by fd for the byte range starting at offset and
    continuing for len bytes.
    The mode argument determines the operation to be performed on the given
    range. Currently only one flag is supported for mode:
    FALLOC_FL_KEEP_SIZE
    This flag allocates and initializes to zero the disk space within the range
    specified by offset and len. After a successful call, subsequent writes into
    this range are guaranteed not to fail because of lack of disk
    space. Preallocating zeroed blocks beyond the end of the file is useful for
    optimizing append workloads. Preallocating blocks does not change the file size
    (as reported by stat(2)) even if it is less than offset+len.
    If FALLOC_FL_KEEP_SIZE flag is not specified in mode, the default behavior is
    almost same as when this flag is specified. The only difference is that on
    success, the file size will be changed if offset + len is greater than the file
    size. This default behavior closely resembles the behavior of the
    posix_fallocate(3) library function, and is intended as a method of optimally
    implementing that function.
    Because allocation is done in block size chunks, fallocate() may allocate a
    larger range than that which was specified.
    
    
    버퍼 캐시 비우기

    비워 두려면이 일련의 명령을 사용할 수 있습니다.

    $ free && sync && echo 3 > /proc/sys/vm/drop_caches && free
                 total       used       free     shared    buffers     cached
    Mem:       1018916     980832      38084          0      46924     355764
    -/+ buffers/cache:     578144     440772
    Swap:      2064376        128    2064248
                 total       used       free     shared    buffers     cached
    Mem:       1018916     685008     333908          0        224     108252
    -/+ buffers/cache:     576532     442384
    Swap:      2064376        128    2064248
    
    

    숫자 인수를 위 명령으로 변경하여 Linux 커널에 캐시 된 항목의 다양한 측면을 삭제하도록 신호를 줄 수 있습니다.

    참고 :불필요한 것들의 메모리를 정리하십시오 (Kernerl 2.6.16 이상). 유용한 정보를 디스크로 플러시하려면 항상 먼저 sync를 실행하십시오 !!!

    페이지 캐시를 비우려면 :

    $ echo 1 > /proc/sys/vm/drop_caches
    
    

    치과와 아이 노드를 해제하려면 :

    $ echo 2 > /proc/sys/vm/drop_caches
    
    

    페이지 캐시, 덴 트리 및 아이 노드를 비우려면 :

    $ echo 3 > /proc/sys/vm/drop_caches
    
    

    위의 내용은 루트로 실행되도록되어 있습니다. sudo 를 사용하여 수행하려는 경우  구문을 다음과 같이 약간 변경해야합니다.

    $ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
    $ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
    $ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
    
    

    위의 대체 방법 :

    # alternative #1
    $ sudo tee /proc/sys/vm/drop_caches <<<1
    # alternative #2
    $ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh
    
    

    구문이 왜 바뀌 었습니까? 와이즈 비즈   /bin/echo 로 인해 프로그램이 루트로 실행 중입니다. 하지만 echo 출력을 루트 전용 파일로 리디렉션하는 쉘은 여전히 ​​실행 중입니다. 현재 쉘은 sudo 의 리디렉션을 수행합니다.  시작합니다.

    참조

    /proc/sys/vm/*의 공식 커널 문서-커널 버전 2.6.29

  • 답변 # 2

    vmtouch를 사용해 볼 수도 있습니다

    sudo
    
    
    이것을 사용하여, fincore와 유사한 메모리에 존재하는 것을 인쇄 할 수 있습니다. 또한 파일을 제거하고 파일을 캐시 등에 영구적으로 매핑 할 수도 있습니다.

  • 답변 # 3

    vmtouch opens every file provided on the command line and maps it into virtual memory        
    with mmap(2). The mappings are opened read-only. It recursively crawls any directories 
    and does the same to all files it finds within them.
    With no options, vmtouch will not read from (touch) any memory pages. It will only use 
    mincore(2) to determine how many pages of each file are actually resident in memory. 
    Before exiting, it will print a summary of the total pages encountered and how many were 
    resident.
    
    

    완벽한 커맨드 업

    echo 2 | sudo tee -a /proc/sys/vm/drop_caches

  • 이전 keyboard shortcuts - GNU 화면에서 'tab'과 'shift + tab'을 바인딩하는 방법은 무엇입니까?
  • 다음 email - pam_exec를 사용한 SSH 로그인 경고