Бесплатные инструменты
Используйте утилиту sync для синхронизации памяти, ожидающей записи в постоянное хранилище.
$ sync
Изучите /proc/meminfo и убедитесь, что объем “грязной памяти”, ожидающей записи на диск (определяется в килобайтах), уменьшится.
Вы также можете заметить небольшой всплеск памяти Writeback, которая активно записывается обратно в постоянное хранилище, и WritebackTmp, который напрямую связан с FUSE (файловая система в пользовательском пространстве).
Изменения в использовании памяти до и после выдачи этой команды.
MemTotal: 16287088 kB ( MemFree: 7688696 kB | MemFree: 7713352 kB MemAvailable: 8315048 kB | MemAvailable: 8339800 kB Buffers: 18452 kB | Buffers: 18492 kB Cached: 1836208 kB | Cached: 1836268 kB SwapCached: 0 kB ( Active: 6457040 kB | Active: 6430504 kB Inactive: 1459164 kB | Inactive: 1459204 kB Active(anon): 6070180 kB | Active(anon): 6043584 kB Inactive(anon): 1021284 kB ( Active(file): 386860 kB | Active(file): 386920 kB Inactive(file): 437880 kB | Inactive(file): 437920 kB Unevictable: 32 kB ( Mlocked: 32 kB ( SwapTotal: 999420 kB ( SwapFree: 999420 kB ( Dirty: 21200 kB | Dirty: 0 kB ← Writeback: 0 kB ( AnonPages: 6061728 kB | AnonPages: 6035384 kB Mapped: 1248224 kB | Mapped: 1248260 kB Shmem: 1029928 kB ( Slab: 348728 kB | Slab: 348748 kB SReclaimable: 120864 kB | SReclaimable: 120852 kB SUnreclaim: 227864 kB | SUnreclaim: 227896 kB KernelStack: 29168 kB | KernelStack: 29184 kB PageTables: 91616 kB | PageTables: 91656 kB NFS_Unstable: 0 kB ( Bounce: 0 kB ( WritebackTmp: 0 kB ( CommitLimit: 9142964 kB ( Committed_AS: 22529316 kB | Committed_AS: 22536664 kB VmallocTotal: 34359738367 kB ( VmallocUsed: 0 kB ( VmallocChunk: 0 kB ( HardwareCorrupted: 0 kB ( AnonHugePages: 38912 kB ( ShmemHugePages: 0 kB ( ShmemPmdMapped: 0 kB ( CmaTotal: 0 kB ( CmaFree: 0 kB ( HugePages_Total: 0 ( HugePages_Free: 0 ( HugePages_Rsvd: 0 ( HugePages_Surp: 0 ( Hugepagesize: 2048 kB ( DirectMap4k: 658988 kB ( DirectMap2M: 11786240 kB ( DirectMap1G: 5242880 kB
Используйте утилиту sysctl для выдачи команды ядру для аннулирования кэша страниц, который является основным дисковым кэшем, используемым, когда данные либо считываются с диска, либо записываются на диск.
$ sudo sysctl -w vm.drop_caches=1
Изучите /proc/meminfo, чтобы убедиться, что кэш страниц в памяти уменьшится.
Изменения в использовании памяти до и после выдачи этой команды.
MemTotal: 16287088 kB ( MemFree: 1595736 kB | MemFree: 7079620 kB MemAvailable: 8339004 kB | MemAvailable: 8325900 kB Buffers: 1714248 kB | Buffers: 1088 kB ← Cached: 5524636 kB | Cached: 1853228 kB ← SwapCached: 0 kB ( Active: 8972220 kB | Active: 6319944 kB Inactive: 4226696 kB | Inactive: 1496236 kB Active(anon): 5963252 kB | Active(anon): 5962128 kB Inactive(anon): 1063684 kB | Inactive(anon): 1076596 kB Active(file): 3008968 kB | Active(file): 357816 kB ← Inactive(file): 3163012 kB | Inactive(file): 419640 kB ← Unevictable: 32 kB ( Mlocked: 32 kB ( SwapTotal: 999420 kB ( SwapFree: 999420 kB ( Dirty: 296 kB | Dirty: 968 kB Writeback: 0 kB ( AnonPages: 5955404 kB | AnonPages: 5957264 kB Mapped: 1250196 kB | Mapped: 1250348 kB Shmem: 1066912 kB | Shmem: 1076720 kB Slab: 1149756 kB | Slab: 1047280 kB SReclaimable: 914580 kB | SReclaimable: 812116 kB SUnreclaim: 235176 kB | SUnreclaim: 235164 kB KernelStack: 29200 kB | KernelStack: 29104 kB PageTables: 91272 kB | PageTables: 91288 kB NFS_Unstable: 0 kB ( Bounce: 0 kB ( WritebackTmp: 0 kB ( CommitLimit: 9142964 kB ( Committed_AS: 22527888 kB | Committed_AS: 22538996 kB VmallocTotal: 34359738367 kB ( VmallocUsed: 0 kB ( VmallocChunk: 0 kB ( HardwareCorrupted: 0 kB ( AnonHugePages: 38912 kB ( ShmemHugePages: 0 kB ( ShmemPmdMapped: 0 kB ( CmaTotal: 0 kB ( CmaFree: 0 kB ( HugePages_Total: 0 ( HugePages_Free: 0 ( HugePages_Rsvd: 0 ( HugePages_Surp: 0 ( Hugepagesize: 2048 kB ( DirectMap4k: 658988 kB ( DirectMap2M: 11786240 kB ( DirectMap1G: 5242880 kB (
Используйте утилиту sysctl, чтобы выдать команду ядру для освобождения восстанавливаемых объектов slab, включая dentries и inode.
$ sudo sysctl -w vm.drop_caches=2
Изучите /proc/meminfo, чтобы убедиться, что память SReclaimable, выделенная для внутренних структур данных ядра, которые могут быть восстановлены, уменьшится.
Просмотрите /proc/slabinfo для подробной информации о кешировании inode, dentry.
Изменения в использовании памяти до и после выдачи этой команды
MemTotal: 16287088 kB ( MemFree: 7078272 kB | MemFree: 7827464 kB MemAvailable: 8329644 kB | MemAvailable: 8411084 kB Buffers: 2564 kB | Buffers: 3696 kB Cached: 1843068 kB | Cached: 1804908 kB SwapCached: 0 kB ( Active: 6334520 kB | Active: 6341572 kB Inactive: 1484256 kB | Inactive: 1438124 kB Active(anon): 5973268 kB | Active(anon): 5979840 kB Inactive(anon): 1062816 kB | Inactive(anon): 1016812 kB Active(file): 361252 kB | Active(file): 361732 kB Inactive(file): 421440 kB | Inactive(file): 421312 kB Unevictable: 32 kB ( Mlocked: 32 kB ( SwapTotal: 999420 kB ( SwapFree: 999420 kB ( Dirty: 1100 kB | Dirty: 1568 kB Writeback: 0 kB ( AnonPages: 5968564 kB | AnonPages: 5971180 kB Mapped: 1249996 kB | Mapped: 1248236 kB Shmem: 1062948 kB | Shmem: 1025484 kB Slab: 1047264 kB | Slab: 346196 kB SReclaimable: 811972 kB | SReclaimable: 118788 kB ← SUnreclaim: 235292 kB | SUnreclaim: 227408 kB KernelStack: 29120 kB | KernelStack: 29136 kB PageTables: 91416 kB | PageTables: 91560 kB NFS_Unstable: 0 kB ( Bounce: 0 kB ( WritebackTmp: 0 kB ( CommitLimit: 9142964 kB ( Committed_AS: 22508796 kB | Committed_AS: 22493648 kB VmallocTotal: 34359738367 kB ( VmallocUsed: 0 kB ( VmallocChunk: 0 kB ( HardwareCorrupted: 0 kB ( AnonHugePages: 38912 kB ( ShmemHugePages: 0 kB ( ShmemPmdMapped: 0 kB ( CmaTotal: 0 kB ( CmaFree: 0 kB ( HugePages_Total: 0 ( HugePages_Free: 0 ( HugePages_Rsvd: 0 ( HugePages_Surp: 0 ( Hugepagesize: 2048 kB ( DirectMap4k: 658988 kB ( DirectMap2M: 11786240 kB ( DirectMap1G: 5242880 kB (
Изменения в статистике распределителя slab ядра до и после выполнения этой команды.
$ sdiff -l -w 57 slabinfo.20 slabinfo.21 slabinfo - version: 2.1 ( # name <active ( nfs_direct_cache 0 ( nfs_read_data 68 ( nfs_inode_cache 102 | nfs_inode_cache 100 ← fscache_cookie_jar 2 ( nf_conntrack 1727 | nf_conntrack 1752 ovl_inode 43303 | ovl_inode 3096 ← au_finfo 0 ( au_icntnr 0 ( au_dinfo 0 ( kvm_async_pf 0 ( kvm_vcpu 0 ( kvm_mmu_page_header ( pte_list_desc 0 ( rpc_inode_cache 41 ( ext4_groupinfo_4k 7454 ( drm_i915_gem_request 9 ( i915_vma 2954 | i915_vma 2953 drm_i915_gem_object 292 | drm_i915_gem_object 292 RAWv6 464 ( UDPv6 260 ( tw_sock_TCPv6 34 ( request_sock_TCPv6 0 ( TCPv6 135 ( kcopyd_job 0 ( dm_uevent 0 ( cfq_io_cq 476 ( cfq_queue 510 ( bsg_cmd 0 ( mqueue_inode_cache 62 ( fuse_request 67 ( fuse_inode 98 | fuse_inode 76 ← ecryptfs_inode_cache ( ecryptfs_auth_tok_list_it ( fat_inode_cache 19 | fat_inode_cache 3 ← fat_cache 0 ( squashfs_inode_cache 188 | squashfs_inode_cache 87 ← jbd2_journal_head 1938 ( jbd2_revoke_table_s 25 ( ext4_inode_cache 469038 | ext4_inode_cache 7998 ← ext4_allocation_context ( ext4_io_end 1728 ( ext4_extent_status 244698 | ext4_extent_status 10710 mbcache 1898 ( fscrypt_info 1152 ( fscrypt_ctx 680 ( userfaultfd_ctx_cache ( dio 205 ( pid_namespace 312 ( posix_timers_cache 140 ( ip4-frags 23 ( xfrm_dst_cache 0 ( RAW 776 | RAW 896 tw_sock_TCP 68 ( request_sock_TCP 52 ( TCP 240 ( hugetlbfs_inode_cache ( dquot 256 ( eventpoll_pwq 6716 ( eventpoll_epi 8056 ( dax_cache 4 ( request_queue 40 ( dmaengine-unmap-256 ( dmaengine-unmap-128 ( sock_inode_cache 7046 ( file_lock_cache 321 ( net_namespace 33 ( shmem_inode_cache 7808 | shmem_inode_cache 7807 ← taskstats 879 ( proc_inode_cache 20991 | proc_inode_cache 7381 ← sigqueue 200 ( bdev_cache 105 ( kernfs_node_cache 146133 | kernfs_node_cache 141254 mnt_cache 4087 ( filp 43510 | filp 44230 inode_cache 34643 | inode_cache 23641 ← dentry 736367 | dentry 53630 ← iint_cache 0 ( lsm_file_cache 24003 | lsm_file_cache 24002 iint_cache 0 ( buffer_head 15177 | buffer_head 15417 nsproxy 1920 | nsproxy 1577 vm_area_struct 86939 | vm_area_struct 87250 mm_struct 1353 ( files_cache 1584 ( signal_cache 2357 ( sighand_cache 1434 ( task_struct 2364 | task_struct 2356 cred_jar 11118 | cred_jar 11706 anon_vma 41724 | anon_vma 41769 pid 74665 | pid 74853 Acpi-Operand 11627 ( Acpi-ParseExt 624 ( Acpi-State 1377 ( Acpi-Namespace 6936 ( numa_policy 31 ( trace_event_file 1970 ( ftrace_event_field 37941 | ftrace_event_field 17566 radix_tree_node 19962 | radix_tree_node 19578 task_group 420 ( dma-kmalloc-8192 0 ( dma-kmalloc-4096 0 ( dma-kmalloc-2048 0 ( dma-kmalloc-1024 0 ( dma-kmalloc-512 0 ( dma-kmalloc-256 0 ( dma-kmalloc-128 0 ( dma-kmalloc-64 0 ( dma-kmalloc-32 0 ( dma-kmalloc-16 0 ( dma-kmalloc-8 0 ( dma-kmalloc-192 0 ( dma-kmalloc-96 0 ( kmalloc-8192 607 | kmalloc-8192 588 kmalloc-4096 2803 | kmalloc-4096 2768 kmalloc-2048 5914 | kmalloc-2048 5749 kmalloc-1024 12056 | kmalloc-1024 12030 kmalloc-512 13772 | kmalloc-512 13765 kmalloc-256 10834 | kmalloc-256 10775 kmalloc-192 11681 | kmalloc-192 11147 kmalloc-128 10545 | kmalloc-128 7556 kmalloc-96 24952 | kmalloc-96 16292 kmalloc-64 144963 | kmalloc-64 43284 kmalloc-32 170695 | kmalloc-32 166264 kmalloc-16 32519 ( kmalloc-8 22539 ( kmem_cache_node 4544 ( kmem_cache 4347 | kmem_cache 3654
Отключить регистрацию событий входа
При выдаче команды drop cache будет выдано сообщение журнала уровня KERN_INFO.
$ sudo sysctl -w vm.drop_caches=2
$ dmesg [...] [Wed Sep 5 03:02:39 2018] sysctl (12414): drop_caches: 2 [...]
$ echo 1 | sudo tee /proc/sys/vm/drop_caches
$ dmesg [...] [Wed Sep 5 03:05:38 2018] tee (12696): drop_caches: 1 [...]
Это сообщение журнала может быть отключено, хотя это действие будет зарегистрировано.
$ sudo sysctl -w vm.drop_caches=4
$ dmesg [...] [Wed Sep 5 03:08:39 2018] sysctl (12730): drop_caches: 4 [...]
Это предотвратит дальнейшие записи сообщений журнала, но его нельзя снова включить без перезагрузки системы, после чего он возобновит стандартные операции ведения журнала.