当前位置:首页 » 挖矿知识 » anonhugepage挖矿

anonhugepage挖矿

发布时间: 2022-12-31 16:15:07

『壹』 如何查看Linux内存中的程序所有堆的地址

linux 下面查看内存有多种渠道,比如通过命令 ps ,top,free 等,比如通过/proc系统,一般需要比较详细和精确地知道整机内存/某个进程内存的使用情况,最好通过/proc 系统,下面介绍/proc系统下内存相关的几个文件

单个进程的内存查看 cat /proc/[pid] 下面有几个文件: maps , smaps, status

maps 文件可以查看某个进程的代码段、栈区、堆区、动态库、内核区对应的虚拟地址,如果你还不了解linux进程的内存空间,可以参考这里。

下图是maps文件内存示例

Develop>cat /proc/self/maps
00400000-0040b000 r-xp 00000000 fd:00 48 /mnt/cf/orig/root/bin/cat
0060a000-0060b000 r--p 0000a000 fd:00 48 /mnt/cf/orig/root/bin/cat
0060b000-0060c000 rw-p 0000b000 fd:00 48 /mnt/cf/orig/root/bin/cat 代码段
0060c000-0062d000 rw-p 00000000 00:00 0 [heap] 堆区
7f1fff43b000-7f1fff5d4000 r-xp 00000000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff5d4000-7f1fff7d3000 ---p 00199000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff7d3000-7f1fff7d7000 r--p 00198000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff7d7000-7f1fff7d9000 rw-p 0019c000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff7d9000-7f1fff7dd000 rw-p 00000000 00:00 0
7f1fff7dd000-7f1fff7fe000 r-xp 00000000 fd:00 2554 /mnt/cf/orig/root/lib64/ld-2.15.so
7f1fff9f9000-7f1fff9fd000 rw-p 00000000 00:00 0
7f1fff9fd000-7f1fff9fe000 r--p 00020000 fd:00 2554 /mnt/cf/orig/root/lib64/ld-2.15.so
7f1fff9fe000-7f1fff9ff000 rw-p 00021000 fd:00 2554 /mnt/cf/orig/root/lib64/ld-2.15.so
7f1fff9ff000-7f1fffa00000 rw-p 00000000 00:00 0
7fff443de000-7fff443ff000 rw-p 00000000 00:00 0 [stack] 用户态栈区
7fff443ff000-7fff44400000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] 内核区

有时候可以通过不断查看某个进程的maps文件,通过查看其虚拟内存(堆区)是否不停增长来简单判断进程是否发生了内存溢出。

maps文件只能显示简单的分区,smap文件可以显示每个分区的更详细的内存占用数据

下图是smaps文件内存示例, 实际显示内容会将每一个区都显示出来,下面我只拷贝了代码段和堆区,

每一个区显示的内容项目是一样的,smaps文件各项含义可以参考这里

Develop>cat /proc/self/smaps
00400000-0040b000 r-xp 00000000 fd:00 48 /mnt/cf/orig/root/bin/cat
Size: 44 kB 虚拟内存大小
Rss: 28 kB 实际使用物理内存大小
Pss: 28 kB
Shared_Clean: 0 kB 页面被改,则是dirty,否则是clean,页面引用计数>1,是shared,否则是private
Shared_Dirty: 0 kB
Private_Clean: 28 kB
Private_Dirty: 0 kB
Referenced: 28 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB 处于交换区的页面大小
KernelPageSize: 4 kB 操作系统一个页面大小
MMUPageSize: 4 kB 体系结构MMU一个页面大小
Locked: 0 kB

0060c000-0062d000 rw-p 00000000 00:00 0 [heap]
Size: 132 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 8 kB
Referenced: 8 kB
Anonymous: 8 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB

下图是status文件内存示例, 加粗部分是内存相关的统计,

Develop>cat /proc/24475/status
Name: netio 可执行程序的名字
State: R (running) 任务状态,运行/睡眠/僵死
Tgid: 24475 线程组号
Pid: 24475 进程id
PPid: 19635 父进程id
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256 该进程最大文件描述符个数
Groups: 0
VmPeak: 6330708 kB 内存使用峰值
VmSize: 268876 kB 进程虚拟地址空间大小
VmLck: 0 kB 进程锁住的物理内存大小,锁住的物理内存无法交换到硬盘

VmHWM: 16656 kB
VmRSS: 11420 kB 进程正在使用的物理内存大小
VmData: 230844 kB 进程数据段大小
VmStk: 136 kB 进程用户态栈大小
VmExe: 760 kB 进程代码段大小
VmLib: 7772 kB 进程使用的库映射到虚拟内存空间的大小
VmPTE: 120 kB 进程页表大小
VmSwap: 0 kB
Threads: 5
SigQ: 0/63346
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001000000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: ffffffffffffffff
CapBnd: ffffffffffffffff
Cpus_allowed: 01
Cpus_allowed_list: 0
Mems_allowed: 01
Mems_allowed_list: 0
voluntary_ctxt_switches: 201
nonvoluntary_ctxt_switches: 909

可以看到,linux下内存占用是一个比较复杂的概念,不能

简单通过一个单一指标就判断某个程序“内存消耗”大小,原因有下面2点:

进程所申请的内存不一定真正会被用到(malloc或mmap的实现)
真正用到了的内存也不一定是只有该进程自己在用 (比如动态共享库)

关于内存的使用分析及本文几个命令的说明也可以参考这里

下面是查看整机内存使用情况的文件 /proc/meminfo

Develop>cat /proc/meminfo
MemTotal: 8112280 kB 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)
MemFree: 4188636 kB LowFree与HighFree的总和,被系统留着未使用的内存
Buffers: 34728 kB 用来给文件做缓冲大小
Cached: 289740 kB 被高速缓冲存储器(cache memory)用的内存的大小
(等于 diskcache minus SwapCache )
SwapCached: 0 kB 被高速缓冲存储器(cache memory)用的交换空间的大小
已经被交换出来的内存,但仍然被存放在swapfile中。
用来在需要的时候很快的被替换而不需要再次打开I/O端口
Active: 435240 kB 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,
除非非常必要否则不会被移作他用
Inactive: 231512 kB 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径.
Active(anon): 361252 kB
Inactive(anon): 120688 kB
Active(file): 73988 kB
Inactive(file): 110824 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB 交换空间的总大小
SwapFree: 0 kB 未被使用交换空间的大小
Dirty: 0 kB 等待被写回到磁盘的内存大小
Writeback: 0 kB 正在被写回到磁盘的内存大小
AnonPages: 348408 kB 未映射页的内存大小
Mapped: 33600 kB 已经被设备和文件等映射的大小
Shmem: 133536 kB
Slab: 55984 kB 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗
SReclaimable: 25028 kB 可收回Slab的大小
SUnreclaim: 30956 kB 不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
KernelStack: 1896 kB 内核栈区大小
PageTables: 8156 kB 管理内存分页页面的索引表的大小
NFS_Unstable: 0 kB 不稳定页表的大小
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2483276 kB
Committed_AS: 1804104 kB
VmallocTotal: 34359738367 kB 可以vmalloc虚拟内存大小
VmallocUsed: 565680 kB 已经被使用的虚拟内存大小
VmallocChunk: 34359162876 kB
HardwareCorrupted: 0 kB
HugePages_Total: 1536 大页面数目
HugePages_Free: 0 空闲大页面数目
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB 大页面一页大小
DirectMap4k: 10240 kB
DirectMap2M: 8302592 kB

『贰』 在BAT工作的开发人员电脑是什么样的配置

在BAT工作的人都知道里面的个人竞争十分激烈,头脑不容易。这是对学生的平均水平的一般参考,对于特别优秀的人,无论他们在哪里都会有自己的闪光点

同时,接受没有自己生活的状态。讲到电脑配置的问题,在BAT里面工作,电脑肯定是要高配置的,不能用着用着就卡的那种,可以先在网上了解一下电脑的品牌,比如像苹果啊,外星人,惠普啊等等这些知名品牌,了解一下他们的参数,或者看一下网友对这个牌子的评价,慎重考虑购买。也可以自己去了解一下电脑方面的知识,比如电脑的内存大小,CPU运行等等。

『叁』 如何将Transparent HugePages关闭

一、分析前的准备工作
1. 查看内存

[ruby] view plain
#cat /proc/meminfo
MemTotal: 903640 kB //总计物理内存的大小
MemFree: 455024 kB //可用内存有多少
Buffers: 10928 kB //磁盘缓存内存的大小
Cached: 189004 kB
SwapCached: 0 kB
Active: 184708 kB
Inactive: 158564 kB
Active(anon): 143364 kB
Inactive(anon): 244 kB
Active(file): 41344 kB
Inactive(file): 158320 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 155648 kB
HighFree: 304 kB
LowTotal: 747992 kB
LowFree: 454720 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 143332 kB
Mapped: 61624 kB
Shmem: 276 kB
Slab: 12776 kB
SReclaimable: 5040 kB
SUnreclaim: 7736 kB
KernelStack: 5128 kB
PageTables: 9012 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 451820 kB
Committed_AS: 7976472 kB
VmallocTotal: 122880 kB
VmallocUsed: 49792 kB
VmallocChunk: 46020 kB

2. 查看进程信息,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器

[ruby] view plain
#top -n 1 -d 1 -m 30 -t
User 13%, System 10%, IOW 0%, IRQ 0%
User 22 + Nice 9 + Sys 24 + Idle 170 + IOW 0 + IRQ 0 + SIRQ 1 = 226

PID TID PR CPU% S VSS RSS PCY UID Thread Proc
1762 1762 0 5% R 1264K 664K root top top
1323 1340 0 3% S 676928K 43096K bg u0_a55 MMHandlerThread com.tencent.mm
9 9 1 2% S 0K 0K root ksoftirqd/1
1323 1325 0 1% S 676928K 43096K bg u0_a55 GC com.tencent.mm
583 737 1 0% S 667232K 30480K fg u0_a44 droid.phasebeam com.android.phasebeam
298 326 1 0% S 728032K 45172K fg system ActivityManager system_server
298 321 0 0% S 728032K 45172K fg system SensorService system_server
960 960 0 0% S 661188K 33004K fg u0_a55 tencent.mm:push com.tencent.mm:push
843 843 1 0% S 660692K 38672K fg u0_a52 ndroid.systemui com.android.systemui
84 250 1 0% S 62188K 5688K fg system VSyncThread /system/bin/surfaceflinger
583 749 1 0% S 667232K 30480K fg u0_a44 droid.phasebeam com.android.phasebeam
960 984 0 0% S 661188K 33004K fg u0_a55 MMHandlerThread com.tencent.mm:push
22 22 0 0% S 0K 0K root kinteractiveup
84 84 1 0% S 62188K 5688K fg system surfaceflinger /system/bin/surfaceflinger
84 253 1 0% S 62188K 5688K fg system Binder_1 /system/bin/surfaceflinger
1143 1528 0 0% S 665552K 33132K bg u0_a23 AirPlayServer com.waxrain.airplayer
84 245 1 0% S 62188K 5688K fg system SurfaceFlinger /system/bin/surfaceflinger
53 53 0 0% S 0K 0K root rknand_buffer
1323 1323 0 0% S 676928K 43096K bg u0_a55 com.tencent.mm com.tencent.mm
298 637 0 0% S 728032K 45172K fg system Binder_4 system_server
298 647 0 0% S 728032K 45172K fg system Binder_5 system_server
1323 1330 0 0% S 676928K 43096K bg u0_a55 Compiler com.tencent.mm
84 864 0 0% S 62188K 5688K fg system Binder_3 /system/bin/surfaceflinger
298 304 1 0% S 728032K 45172K fg system Compiler system_server
3 3 0 0% S 0K 0K root ksoftirqd/0
1323 1335 0 0% S 676928K 43096K fg u0_a55 Binder_2 com.tencent.mm
51 51 0 0% S 0K 0K root binder
52 52 0 0% S 352K 184K root ueventd /sbin/ueventd
54 54 1 0% S 0K 0K root mtdblock0
55 55 1 0% S 0K 0K root mtdblock1

3. 虚拟内存的查看,目前还看不懂

[ruby] view plain
#cat /proc/vmstat
nr_free_pages 112977
nr_inactive_anon 61
nr_active_anon 36183
nr_inactive_file 39628
nr_active_file 10351
nr_unevictable 0
nr_mlock 0
nr_anon_pages 36180
nr_mapped 15427
nr_file_pages 50046
nr_dirty 0
nr_writeback 0
nr_slab_reclaimable 1455
nr_slab_unreclaimable 2005
nr_page_table_pages 2281
nr_kernel_stack 689
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 69
nr_dirtied 5665
nr_written 5413
nr_anon_transparent_hugepages 0
nr_dirty_threshold 26869
nr_dirty_background_threshold 6717
pgpgin 197593
pgpgout 26455
pswpin 0
pswpout 0
pgalloc_normal 389068
pgalloc_high 61026
pgalloc_movable 0
pgfree 563265
pgactivate 10977
pgdeactivate 0
pgfault 450191
pgmajfault 1011
pgrefill_normal 0
pgrefill_high 0
pgrefill_movable 0
pgsteal_normal 0
pgsteal_high 0
pgsteal_movable 0
pgscan_kswapd_normal 0
pgscan_kswapd_high 0
pgscan_kswapd_movable 0
pgscan_direct_normal 0
pgscan_direct_high 0
pgscan_direct_movable 0
pginodesteal 0
slabs_scanned 0
kswapd_steal 0
kswapd_inodesteal 0
kswapd_low_wmark_hit_quickly 0
kswapd_high_wmark_hit_quickly 0
kswapd_skip_congestion_wait 0
pageoutrun 1
allocstall 0
pgrotated 0
compact_blocks_moved 0
compact_pages_moved 0
compact_pagemigrate_failed 0
compact_stall 0
compact_fail 0
compact_success 0
unevictable_pgs_culled 0
unevictable_pgs_scanned 0
unevictable_pgs_rescued 0
unevictable_pgs_mlocked 0
unevictable_pgs_munlocked 0
unevictable_pgs_cleared 0
unevictable_pgs_stranded 0
unevictable_pgs_mlockfreed 0

4. 虚拟机信息,包括进程的,线程的跟踪信息,这是用来跟踪进程和线程具体点的好地方 。
导出到当前目录 adb pull /data/anr/traces.txt .

二、分析log
1. 查找关键字
通过查找:"null" "error" " "E/","Fatal","NullPointerException","Build fingerprint:","exception","anr","DexOpt"等的错误信息,来定位问题

1)空指针问题
NullPointerException: 这个直接找到java代码,首先分析为什么会是空指针,如果逻辑上没有问题,加上一个判断就可以,也就是说如果为空的时候再次赋值或者直接返回

2).没有捕获异常问题
Exception:
能捕获的话捕获

『肆』 如何将Transparent HugePages关闭

[root@localhost ~]# grep Huge /proc/meminfo
AnonHugePages: 2048 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

如果输出包含类似于"AnonHugepages: xxxx kB",并且AnonHugePages > 0kB,则表明内核使用的是Transparent HugePages(透明巨大页面)
它的值我们可以从/proc/meminfo从找到它正在被内核使用的AnonHugePages当前值

# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never

若显示的不是never则证明Transparent HugePages正在被使用。

下面的操作是如何disable Transparent HugePages操作,

[root@localhost ~]# vim /etc/grub.conf ///在kernel /最后添加transparent_hugepage=never,保存退出

title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never
initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img

重启下,
[root@localhost ~]# grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 2
HugePages_Free: 2
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

『伍』 kswapd0 这个是什么进程

采用hugepage,关闭11G的amm。自己看看网上很多帖子讲如何实现的。
我们也遇到这个问题,TMD连接数达到36xx。采用后问题缓解,btw我们是10g。
11G采用hugepage有点麻烦,你可以在出现问题时看看:
# cat /proc/meminfo | grep -i page
AnonPages: 12529120 kB
PageTables: 751540 kB
AnonHugePages: 16384 kB
HugePages_Total: 6000
HugePages_Free: 2159
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
看看PageTables有多大。
如果不这样,可以减少sga的大小看看情况是否好转。

『陆』 Linux服务器要怎么查看内存

free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

直接输入free命令,显示如下

泰海科技解答

『柒』 为什么设置的anon_root不生效

通过第三方软件获得Root权限,可以访问和修改手机操作系统里几乎所有的文件,但这样操作有可能影响手机的稳定性,出现死机、重启等人为性故障。另外获取权限后一般对存储器和CPU等主板上主要部件引起不良。
Root属于修改操作系统软件,按照条例不属于包修范围。oppo为了提升顾客满意度,对Root顾客提供免费升级固件服务,如果Root已影响到手机硬件需要更换主板,则需要收取主板费用。
若您的机器Root后需将机器恢复到原来的系统版本,请将机器送到oppo服务中心,由客户工程师帮助检查处理。自行将设备恢复出厂设置是无法取消Root权限的。

热点内容
bfc币对usdt 发布:2025-04-16 16:34:11 浏览:780
怡亚通区块链平台 发布:2025-04-16 16:18:36 浏览:532
区块链百倍币有哪些 发布:2025-04-16 16:13:31 浏览:913
如何通过百度区块链赚钱 发布:2025-04-16 16:11:54 浏览:156
区块链的演化逻辑与经济学意义 发布:2025-04-16 15:58:22 浏览:933
usdt转化成人民币的汇率 发布:2025-04-16 15:47:13 浏览:756
北交所跟USDT 发布:2025-04-16 15:44:02 浏览:241
犇比特币是中国的吗 发布:2025-04-16 15:07:50 浏览:607
xrp中心化分析 发布:2025-04-16 15:07:06 浏览:310
eth到现在多少年了 发布:2025-04-16 14:52:46 浏览:666