当前位置: 首页 > news >正文

深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存

文章目录

  • 深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存
    • 实际内存占用:使用 `memtester`
      • 安装 `memtester`
        • 下载和编译安装 `memtester`
      • 使用 `memtester`
    • 缓存占用:使用虚拟内存构造内存消耗
      • 创建虚拟内存目录
      • 挂载虚拟内存
      • 创建大文件以消耗内存
      • 释放虚拟内存
    • 总结

深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存

在服务器管理和性能调优中,了解内存使用情况是至关重要的。为了更好地理解和模拟内存使用,我们可以分为两个部分:实际内存占用和缓存占用。

本文将介绍

  1. 如何使用 memtester 模拟程序实际内存占用
  2. 通过虚拟内存构造缓存占用。

实际内存占用:使用 memtester

memtester 是一个用于测试内存子系统稳定性的工具,它可以帮助我们模拟服务器的实际内存占用情况。以下是使用 memtester 模拟实际内存占用的步骤:

安装 memtester

在大多数 Linux 发行版上,你可以通过包管理器安装 memtester

sudo apt-get install memtester    # Debian/Ubuntu
sudo yum install memtester        # CentOS/RHEL

如果需要从源码编译安装 memtester,可以按照以下步骤操作:

下载和编译安装 memtester
  1. 安装编译工具:

    yum -y install gcc automake autoconf libtool make
    
  2. 下载 memtester 源码:

    wget http://pyropus.ca/software/memtester/old-versions/memtester-4.2.2.tar.gz
    
  3. 解压安装:

    tar -zxvf memtester-4.2.2.tar.gz 
    cd memtester-4.2.2/
    make && make install 
    
  4. 查看 memtester 的安装位置:

    whereis memtester
    memtester: /usr/local/bin/memtester
    
  5. 可选择将启动文件名修改为自定义程序名以便识别:

    mv /usr/local/bin/memtester /usr/local/bin/gz-server
    
  6. 清理安装文件:

    rm memtester-4.2.2* -rf
    

使用 memtester

使用 memtester 时,你可以指定测试的内存大小和次数。以下命令将测试 1GB 的内存,重复 1 次:

sudo memtester 1024M 1

或者,后台运行并记录日志:

nohup gz-server 2G > 1.log &

运行上述命令后,memtester 将开始分配和测试指定大小的内存。你可以通过 tophtop 等工具监控内存使用情况。

top

top 输出中,你会看到 memtester 占用了大量内存,从而模拟了实际的内存使用情况。

free -g

示例输出:

              total        used        free      shared  buff/cache   available
Mem:              3           2           0           0           0           1
Swap:             0           0           0

缓存占用:使用虚拟内存构造内存消耗

除了实际占用内存外,我们还可以通过缓存占用来模拟内存使用。以下是通过虚拟内存构造内存消耗的步骤:

创建虚拟内存目录

首先,创建一个临时目录来挂载虚拟内存:

mkdir /tmp/memory

挂载虚拟内存

使用 tmpfs 挂载一个 1GB 大小的虚拟内存到临时目录:

mount -t tmpfs -o size=1024M tmpfs /tmp/memory

创建大文件以消耗内存

在挂载的虚拟内存中创建一个大文件,这将占用大量内存:

dd if=/dev/zero of=/tmp/memory/block bs=1M count=1024

此时,你可以使用 free -mtop 命令查看内存使用情况,你会看到缓存占用的大量内存。

free -m

释放虚拟内存

为了释放消耗的虚拟内存,删除大文件并卸载虚拟内存:

rm /tmp/memory/block
umount /tmp/memory
rmdir /tmp/memory

执行上述命令后,内存使用情况将恢复正常。

总结

通过本文介绍的方法,你可以模拟服务器的内存使用情况,从而更好地理解和调优服务器性能。使用 memtester 可以模拟实际内存占用,而通过虚拟内存构造缓存占用可以帮助你了解缓存对内存使用的影响。无论是实际占用还是缓存占用,这些方法都可以帮助你在测试和调优过程中更好地管理和监控服务器的内存使用情况。

使用 memtester 进行实际内存占用测试,通过虚拟内存模拟缓存占用,可以为服务器性能优化提供更加真实和准确的模拟环境。在测试和生产环境中,这些技巧都是非常有用的。

相关文章:

深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存

文章目录 深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存实际内存占用:使用 memtester安装 memtester下载和编译安装 memtester 使用 memtester 缓存占用:使用虚拟内存构造内存消耗创建虚拟内存目录挂载虚拟内存创建大文件以消耗内…...

《Milvus Cloud向量数据库指南》——Zilliz Cloud 高可用性深度解析:赋能GenAI应用,引领非结构化数据新纪元

在人工智能与大数据技术日新月异的今天,非结构化数据的处理与分析已成为推动行业智能化转型的关键驱动力。Zilliz Cloud,作为基于开源向量数据库Milvus构建的全托管解决方案,不仅革新了非结构化数据的存储与查询方式,更以其卓越的高可用性设计,为开发人员构建高效、可靠的…...

2024/8/4 维高-STD60N驱动器(伺服)---客户反馈:电机异响

步进电机 MHS1A86-60B85B ,额定电流6A 步骤一:设置额定电流 std60n驱动器拔码全部为off(后台设置),伺服后台连上后设置h00-11按电机铭牌进行 设置下额定电流 步骤二:最好设置峰值电流一…...

驾驭RESTful海洋:在PyCharm中配置和使用REST客户端全攻略

标题:驾驭RESTful海洋:在PyCharm中配置和使用REST客户端全攻略 引言 在当今的软件开发中,REST(Representational State Transfer)API已成为前后端分离架构的核心组成部分。PyCharm,作为业界领先的集成开发…...

策略模式的一次应用

项目的需求是将一组图像按照相似度分类。 采用了模板匹配计算相似度的实现方式。 #include <opencv2/core.hpp> #include <openev2/core/utility.hpp> #include <opencv2/highqui.hpp> #include <openav2/imgproc.hpp> cv::Mat image matched; double …...

探索PyCharm的C/C++支持:一站式配置指南

探索PyCharm的C/C支持&#xff1a;一站式配置指南 引言 PyCharm&#xff0c;作为JetBrains家族中的一个强大IDE&#xff0c;以其对Python的卓越支持而闻名。然而&#xff0c;PyCharm的多语言支持同样不容小觑。本文将带领你了解如何在PyCharm中配置C/C环境&#xff0c;让你在…...

手机三要素接口怎么对接呢?(一)

一、什么是手机三要素&#xff1f; 手机三要素又叫运营商三要素&#xff0c;运营商实名认证&#xff0c;运营商实名核验&#xff0c;手机三要素实名验证&#xff0c;手机三要素实名核验&#xff0c;每个人的称呼都不同&#xff0c;但是入参和出参是一样的。 输入姓名、身份证…...

状态同步帧同步

帧同步&#xff1a; 有明确的逻辑帧概念&#xff0c;按照固定的逻辑帧间隔同步帧数据 原理 锁帧&#xff1a;mmo那种游戏&#xff0c;服务器需要收到第k帧所有客户端的指令&#xff0c;就算没有操作也发个空指令上去&#xff08;相对来说回合制卡牌这类就简单很多&#xff0…...

Flink 开发语言选择 —— Java vs Scala

引言 Apache Flink 是一个用于处理无界和有界数据流的开源分布式计算框架。随着 Flink 的日益流行&#xff0c;越来越多的开发者开始考虑使用哪种编程语言来进行 Flink 应用程序的开发。本文将探讨在 Flink 中使用 Java 和 Scala 的优缺点&#xff0c;并帮助你做出更明智的选择…...

如何在 Apache Web 服务器中安装、配置和使用模块

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 ## 状态&#xff1a;已弃用本文涵盖的是不再受支持的 Ubuntu 版本。如果您目前正在运行 Ubuntu 12.04 服务器&#xff0c;我们强烈建议升…...

海信聚好看的DBDocter软件使用心得

在墨天轮大会看到这个软件,好称是内核级别的诊断工具, 工作空闲下载免费看看 结果要1.7GB还TAR. DBdoctor是一款内核级数据库性能诊断软件。可以对数据库做细粒度的扫描&#xff0c;帮助您一分钟内找到数据库性能问题&#xff0c;实现性能诊断百倍提效。针对数据库性能诊断门…...

dfs深搜

Problem - C - Codeforces 无向图,判断是否是子叶....

【React】详解 index.js 文件

文章目录 一、index.js文件的基本结构1. 引入必要的模块2. 渲染根组件3. 注册服务工作者&#xff08;可选&#xff09; 二、index.js文件的详细解析1. ReactDOM.render的作用2. 为什么使用React.StrictMode3. 服务工作者的注册 三、index.js文件的最佳实践1. 使用模块化引入2. …...

Android NDK/JNI面试题大全及参考答案(3万字长文)

目录 什么是NDK?它主要用来做什么? 为什么在Android开发中使用NDK? 描述一下NDK和JDK之间的关系 举出一些使用NDK开发的应用场景 什么是JNI?它如何与NDK配合使用? 如何安装和配置Android NDK? 在Android Studio中如何配置NDK路径? 描述一下NDK工具链中的主要工具…...

从根儿上学习spring一 之杂谈

相信学做Java开发的同学从开始工作时就被问及什么是spring的依赖注入&#xff0c;以及切面编程。今天我们简单再聊聊这两个概念。 依赖注入 这里的依赖不是动词依赖依靠的意思&#xff0c;而是名词。可以把这两个词翻过来读下”注入依赖“&#xff0c;所谓的依赖可以理解成一…...

AI智能名片小程序在促销性内容营销中的创新应用与策略分析

摘要&#xff1a;在数字化时代&#xff0c;企业营销手段日益丰富多元&#xff0c;促销性内容作为吸引顾客、促进消费的关键手段之一&#xff0c;其形式与效率不断被革新。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI智能名片小程序作为一种新兴的营销…...

13. 罗马数字转整数【 力扣(LeetCode) 】

一、题目描述 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符数值字符数值I1V5X10L50C100D500M1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1 。12 写做 XII &#xff0c;即为 X…...

0CTF/TCTF 2023 OLAPInfra Nashorn RCE + HDFS UDF RCE

前置知识 ClickHouse&#xff1a;是一个开源的列式数据库管理系统 clickhouse-jdbc-bridge&#xff1a;clickhouse数据库和jdbc交互的工具 HDFS&#xff08;Hadoop Distributed File System&#xff09;&#xff1a;专为大数据存储和处理而设计。 审计 <?php error_re…...

Studying-代码随想录训练营day56| 108.冗余连接、109.冗余连接II

第56天&#xff0c;图论06&#xff0c;并查集题目类型冗余连接(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 108.冗余连接 109.冗余连接II 总结 108.冗余连接 文档讲解&#xff1a;手撕冗余连接 题目&#xff1a;108. 冗余连接 (kamacoder.com) 学习&…...

基于springboot+vue+uniapp的智慧物业平台小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

MATLAB霍夫曼表盘识别系统

MATLAB霍夫曼表盘识别系统 一、介绍 本设计为基于MATLAB的表盘指针识别&#xff0c;算法原理是基于hough变换。可检测压力表&#xff0c;石英手表&#xff0c;电表刻度&#xff0c;气压表等带指针刻度的表盘。通过hough检测直线和圆的关系&#xff0c;得出指针夹角&#xff0…...

Python | Leetcode Python题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp [float(inf)] * (amount 1)dp[0] 0for coin in coins:for x in range(coin, amount 1):dp[x] min(dp[x], dp[x - coin] 1)return dp[amount] if d…...

python中类class的魔法方法

开始介绍之前&#xff0c;我们先看下之前文章我们介绍过的内置类merryview的一些方法&#xff0c;如下图所示&#xff1a; 有很多双下划线开始和结束的method&#xff0c;这么多method是做啥子用的呢&#xff1f; 其实这些方法就是我们常说的魔法方法&#xff0c;也是python中的…...

计算机体系结构和计算机组成原理的区别

如何理解计算机体系结构和计算机的组成&#xff1f;哪个对计算机的性能更重要&#xff1f;说明理由 目录 计算机体系结构 计算机组成 二者区别 哪个对性能更重要 计算机体系结构 计算机体系结构是指根据属性和功能不同而划分的计算机理论组成部分及计算机基本工作原理、理论…...

MySQL--数据库备份

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、为什么要备份 备份&#xff1a;能够防止由于机械故障以及人为误操作带来的数据丢失&#xff0c;例如将数据库文件保存在了其它地方。 冗余&#…...

influxDB的常用命令

目录 1.查看数据库命令 2.进入某数据库命令 3.创建表的命令 (host 和region 字段是必须的) 4.显示所有的表命令 5. 删除表 6.查询表数据 7.显示数据库用户 8.创建用户 9.创建管理员用户 10.修改密码(密码用单引号括住&#xff0c;不要用双引号) 11. 分配数据库访问权…...

使用 1panel面板 部署 springboot 和 vue

代码仓库&#xff1a;还没弄 目录 网站介绍安装步骤1. 准备云服务器2. 准备域名&#xff08;可跳过&#xff09;3. 安装1panel面板4. 服务器开放端口5. 进入1panel面板6. 安装并启动软件&#xff08;服务器和面板开放端口&#xff09;7. 打包并上传项目7.1 打包 Java项目&#…...

快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型(曙光超算互联网平台异构加速卡DCU)

序言 本文以 LLaMA-Factory 为例&#xff0c;在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE&#xff0c;私有化部署Llama3模型&#xff0c;并对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。 快速体验基础版本&#xff0c;请参考另一篇博客&#xff1a;快…...

Cocos Creator 3.8.x bundle设置最佳方案

A&#xff1a; 项目开始场景(Start Scene)加载显示最快的Bundle设置方案&#xff1a;不要使用resources文件夹&#xff0c;除了项目开始场景(Start Scene)所在文件夹&#xff0c;将所有文件分类设置成Bundle&#xff1b; B&#xff1a; A方案较为麻烦&#xff0c;项目文件夹多时…...

【论文笔记】4D Millimeter-Wave Radar in Autonomous Driving: A Survey

原文链接&#xff1a;https://arxiv.org/abs/2306.04242 I. 引言 传统毫米波雷达&#xff08;3D毫米波雷达&#xff09;测量俯仰角的能力有限&#xff0c;数据通常仅包括距离、水平角和多普勒速度信息。此外&#xff0c;3D雷达数据存在噪声且分辨率低&#xff08;尤其是水平角…...