У меня есть две программы, одна на C++, другая на ассемблере. Я хочу сравнить, сколько памяти они используют при работе соответственно. Как я могу это сделать? Я провожу тестирование в Windows, но я также хотел бы знать, как это сделать в Linux.
задан 26 сен ’09, 03:09
user176121
9 ответы
Запустите программу в одной оболочке. Откройте другую оболочку и запустите команду «top». он будет перечислять запущенные процессы и выделять много памяти, которую они потребляют. я думаю, вы можете опросить /proc/yourprocessid/stat, чтобы узнать, сколько памяти он использует с течением времени.
Создан 26 сен.
хм, это довольно круто, это похоже на команду ps, но динамично. хотя мои программы довольно маленькие, поэтому я не думаю, что этот конкретный метод будет работать. — user176121
о, если это короткая программа. просто поместите его в цикл, пока вы смотрите его в «верхней части» для i в <1..3>; сделать пс; Выполнено; запускает пс 3 раза. Или, если вы можете отредактировать свою программу, добавьте сон в конце, чтобы у вас было время сделать «ps» до завершения программы — открывать
Как узнать чем занята и куда пропадает память на диске «С»? + Как освободить память на всех дисках.
Обычно сверху я беру столбец «RES» (резидентный размер) минус столбец «SHR» (размер общей памяти). В большинстве случаев это дает хорошее представление о том, сколько ваша программа действительно использует. — Вениамин
В Linux попробуйте valgrind . Это удивительный инструмент со слишком большим количеством функций, чтобы простые смертные могли полностью его понять. Посмотри на valgrind ‘s massif .
Создан 26 сен.
Это очень полезно, но массив по умолчанию анализирует только динамическую память. Как мы можем читать дальше ссылке: «По умолчанию профилирование стека отключено, так как оно сильно замедляет работу Massif. [. ] Профилирование стека можно включить с помощью параметра —stacks=yes». — Дзаймацу
- Запустите монитор производительности из меню «Пуск»/«Администрирование/Производительность».
- Если вы хотите начать регистрацию:
- Выберите журнал производительности и предупреждение > Текущий журнал в левой части браузера.
- Выберите Новые настройки журнала.
- Дайте соответствующее имя журналу, например, performance_Server для сервера.
- Он подскажет вам одно меню. На вкладках «Общие» нажмите кнопку «Добавить» и выберите процесс, который вы хотите отслеживать. (Измените объект производительности на процесс, для «выбрать счетчики из списка» выберите «частные байты», для «выбора экземпляров из списка» выберите процесс, который вы хотите отслеживать.) После этого нажмите «Добавить» и закройте. Теперь измените интервал в соответствии с требованиями тестового примера. Теперь перейдите на вкладку «файлы журнала», измените тип файла журнала на формат csv или tsv. Теперь примените и нажмите OK.
- Если вы хотите запустить/остановить ведение журнала:
- Выберите конкретный журнал, который вы хотите запустить и остановить.
- На панели инструментов выше вы увидите кнопку запуска и остановки.
- Если вы хотите проверить содержимое файла журнала:
- Щелкните Параметры/Данные из…
- Выберите файл журнала для просмотра, нажмите OK.
- Перейти к экрану графика (View/Chart)
- Нажмите Редактировать/Добавить в диаграмму
- Добавьте в схему необходимые элементы. (В случае, если утечка памяти должна быть проверена, вам необходимо просмотреть PrivateBytes процессов и их _Total)
- Считайте значения с диаграммы (минимальные и максимальные значения отображаются внизу диаграммы)
- Если вы хотите контролировать передачу по сети:
- Отображение экрана диаграммы (View/Chart)
- Нажмите «Изменить/Добавить в журнал» и выберите элементы «Сетевой интерфейсОтправленные байты». Если вы установили его в dl
- Или Network Inerface Bytes Received, если вы установили его в CRS-PC+.
- Нажмите Готово
- Отслеживание использования памяти:
- В меню Пуск/Программы/Администрирование/ запустите программу Performance Monitor
- Нажмите на кнопку, чтобы открыть окно добавления процессов
- Заполните поля следующим образом:
- Объект: Процесс
- Счетчик: частные байты
- Экземпляр: процесс, занятость памяти которого необходимо отобразить.
- Нажмите кнопку Добавить
- Повторите последние два шага для каждого процесса, память которого необходимо отобразить.
- Закройте окно, добавляющее процессы
- В нижней части окна системного монитора находится список ранее выбранных процессов.
Как использовать записанные данные
Как узнать сколько оперативной памяти поддерживает твой ПК или ноут?
- Теперь откройте файл Perfmon_.csv или Perfmon_.tsv с помощью WordPad или Excel.
Если вы открыли файл с помощью Excel, то с помощью опции Сохранить как сохраните файл в формате Microsoft Excel.
ответ дан 18 окт ’09, 20:10
Источник: stackovergo.com
Measure memory usage in Visual Studio (C#, Visual Basic, C++, F#)
Applies to:
Visual Studio
Visual Studio for Mac
Visual Studio Code
Find memory leaks and inefficient memory while you’re debugging with the debugger-integrated Memory Usage diagnostic tool. The Memory Usage tool lets you take one or more snapshots of the managed and native memory heap to help understand the memory usage impact of object types. You can also analyze memory usage without a debugger attached or by targeting a running app. For more information, see Run profiling tools with or without the debugger. For information on choosing the best memory analysis tool for your needs, see Choose a memory analysis tool.
Although you can collect memory snapshots at any time in the Memory Usage tool, you can use the Visual Studio debugger to control how your application executes while investigating performance issues. Setting breakpoints, stepping, Break All, and other debugger actions can help you focus your performance investigations on the code paths that are most relevant. Performing those actions while your app is running can eliminate the noise from the code that doesn’t interest you and can significantly reduce the amount of time it takes you to diagnose an issue.
The debugger-integrated Diagnostics Tools are supported for .NET development in Visual Studio, including ASP.NET, ASP.NET Core, native/C++ development, and mixed mode (.NET and native) apps. Windows 8 and later is required to run profiling tools with the debugger (Diagnostic Tools window).
In this tutorial, you will:
- Take snapshots of memory
- Analyze memory usage data
If Memory Usage does not give you the data that you need, other profiling tools in the Performance Profiler provide different kinds of information that might be helpful to you. In many cases, the performance bottleneck of your application may be caused by something other than your memory, such as CPU, rendering UI, or network request time.
Custom Allocator Support The native memory profiler works by collecting allocation ETW event data emitted during run time. Allocators in the CRT and Windows SDK have been annotated at the source level so that their allocation data can be captured. If you are writing your own allocators, then any functions that return a pointer to newly allocated heap memory can be decorated with __declspec(allocator), as seen in this example for myMalloc:
__declspec(allocator) void* myMalloc(size_t size)
Collect memory usage data
- Open the project you want to debug in Visual Studio and set a breakpoint in your app at the point where you want to begin examining memory usage. If you have an area where you suspect a memory issue, set the first breakpoint before the memory issue occurs.
Tip Because it can be challenging to capture the memory profile of an operation that interests you when your app frequently allocates and de-allocates memory, set breakpoints at the start and end of the operation (or step through the operation) to find the exact point that memory changed.




Note Because collecting memory data can affect the debugging performance of your native or mixed-mode apps, memory snapshots are disabled by default. To enable snapshots in native or mixed-mode apps, start a debugging session (Shortcut key: F5). When the Diagnostic Tools window appears, choose the Memory Usage tab, and then choose Heap Profiling. Stop (Shortcut key: Shift+F5) and restart debugging.


Note Because collecting memory data can affect the debugging performance of your native or mixed-mode apps, memory snapshots are disabled by default. To enable snapshots in native or mixed-mode apps, start a debugging session (Shortcut key: F5). When the Diagnostic Tools window appears, choose the Memory Usage tab, and then choose Heap Profiling. Stop (Shortcut key: Shift+F5) and restart debugging.


Tip To create a baseline for memory comparisons, consider taking a snapshot at the start of your debugging session.
Analyze memory usage data
The rows of Memory Usage summary table lists the snapshots that you have taken during the debugging session and provides links to more detailed views.


The name of the columns depend on the debugging mode you choose in the project properties: .NET, native, or mixed (both .NET and native).
- The Objects (Diff) and Allocations (Diff) columns display the number of objects in .NET and native memory when the snapshot was taken.
- The Heap Size (Diff) column displays the number of bytes in the .NET and native heaps
When you have taken multiple snapshots, the cells of the summary table include the change in the value between the row snapshot and the previous snapshot.
To analyze memory usage, click one of the links that opens up a detailed report of memory usage:

- To view details of the difference between the current snapshot and the previous snapshot, choose the change link to the left of the arrow (). A red arrow indicates an increase in memory usage, and a green arrow indicates a decrease.
To help identify memory issues more quickly, the diff reports are sorted by object types that increased the most in overall number (click the change link in Objects (Diff) column) or that increased the most in overall heap size (click the change link in Heap Size (Diff) column).
- To view details of only the selected snapshot, click the non-change link. The report appears in a separate window.
Managed types reports
Choose the current link of an Objects (Diff) or Allocations (Diff) cell in the Memory Usage summary table.


The top pane shows the count and size of the types in the snapshot, including the size of all objects that are referenced by the type (Inclusive Size).
The Paths to Root tree in the bottom pane displays the objects that reference the type selected in the upper pane. The .NET garbage collector cleans up the memory for an object only when the last type that references it has been released.
The Referenced Objects tree displays the references that are held by the type selected in the upper pane.

The Referenced Types tree displays the references that are held by the type selected in the upper pane.

To display the instances of a selected type in the upper pane, click on «View Instances» next to the object type.


The Instances view displays the instances of the selected object in the snapshot in the upper pane. The Paths to Root and Referenced Objects pane displays the objects that reference the selected instance and the types that the selected instance references. When the debugger is stopped at the point where the snapshot was taken, you can hover over the Value cell to display the values of the object in a tool tip.
Native type reports
Choose the current link of an Allocations (Diff) or Heap Size (Diff) cell in the Memory Usage summary table of the Diagnostic Tools window.


The Types View displays the number and size of the types in the snapshot.
- Choose the instances icon (
) of a selected type to display information about the objects of the selected type in the snapshot. The Instances view displays each instance of the selected type. Selecting an instance displays the call stack that resulted in the creation of the instance in the Allocation Call Stack pane. 

- Choose View Instances next to a selected type to display information about the objects of the selected type in the snapshot. The Instances view displays each instance of the selected type. Selecting an instance displays the call stack that resulted in the creation of the instance in the Allocation Call Stack pane.

- Choose Stacks View in the View Mode list to see the allocation stack for the selected type.

- Choose Stacks to see the allocation stack for the selected type.
Change (Diff) reports
- Choose the change link in a cell of the summary table of the Memory Usage tab on the Diagnostic Tools window.




The change report adds columns (marked with (Diff)) to the base report that show the difference between the base snapshot value and the comparison snapshot. Here’s how a Native Type View diff report might look:


Blogs and videos
Next steps
In this tutorial, you’ve learned how to collect and analyze memory usage data. If you already completed the tour of the profiler, you may want to get a quick look at how to analyze CPU usage in your apps.
In this tutorial, you’ve learned how to collect and analyze memory usage data while debugging. You may want to find out more about analyzing memory usage in release builds using the Performance Profiler.
Источник: learn.microsoft.com
Как узнать оперативную память Linux
Когда дело доходит до оптимизации производительности системы Linux оперативная память — один из самых важных факторов, на которые нужно обратить внимание. В Linux есть множество утилит для контроля использования этого драгоценного ресурса. Инструменты отличаются друг от друга видом и детальностью предоставляемой информации (например для системы в целом, отдельного процесса или отдельного пользователя) интерфейсом (консольный интерфейс или графический) и режимом работы (интерактивный или пассивный режим).
Ниже представлен небольшой список консольных и графических утилит для проверки количества свободной и используемой оперативной памяти для платформы Linux.
Как узнать оперативную память Linux
1. Файл /proc/meminfo
Простейший способ проверить использование оперативной памяти — посмотреть /proc/meminfo. Это автоматически обновляемый файл, который является источником для таких утилит как free, ps и top. Кроме количества свободной и использованной памяти в /proc/meminfo есть все что можно узнать о памяти. Информация о памяти для конкретного процесса находится по адресу /proc/pid/statm или /proc/pid/status.

2. atop
Утилита atop — основана на ncurses и представляет из себя интерактивный монитор ресурсов. Она показывает в динамическом режиме такие системные параметры: CPU, память, нагрузка на сеть и другие. Также есть подсветка цветом при перегрузке системы. Можно посмотреть топ процессов или пользователей по использованию ими ресурсов, таким образом системный администратор может понять какие процессы или пользователи перегружают систему. Из памяти можно отобразить свободную, кэш, буферизированную и виртуальную. Утилиту сначала надо установить:
sudo apt install atop
И только потом можно использовать:

3. free
Команда free — это быстрый и простой способ посмотреть оперативную память linux получив информацию о её использовании из файла /proc/meminfo. Будет показано общее количество и количество свободной физической памяти и файла подкачки, а также буфера ядра.

4. Системный монитор Gnome
GNOME System Monitor — это приложение с графическим интерфейсом, которое показывает краткую статистику использования системных ресурсов — памяти, процессора, подкачки и сети. Также есть информация по использованию процессора и памяти для каждого процесса. Запустите утилиту и откройте вкладку Ресурсы:

5. htop
Программа htop — основанный на ncurses монитор процессов, который показывает использование процессора и памяти для каждого процесса по отдельности в реальном времени. Здесь можно посмотреть количество резидентной памяти, общий объем памяти для программы, размер библиотек, размер страниц, и количество памяти для всех запущенных процессов. Также на удобной псевдографической диаграмме можно посмотреть сколько памяти занято Linux:

6. KDE System Monitor
Как и у Gnome у KDE есть свое решение, которое помогает узнать использование оперативной памяти Linux. Программа KDE System Monitor очень похожа по функцональности на свой аналог в Gnome. Есть просмотр статистики использования системных ресурсов, а также отображение потребления памяти и процессора напротив каждого процесса.
7. memstat
Утилита memstat полезна для определения какой исполняемый файл, процесс или библиотека использует много оперативной памяти. Утилита определяет количество использованных ресурсов по PID идентификатору процесса. Эту утилиту тоже надо установить:
sudo apt install memstat

8. nmon
Программа nmon — представляет из себя ncurses инструмент для тестирования системы. Можно тестировать центральный процессор, память, диск, вводвывод, ядро, файловую систему и сетевые ресурсы в интерактивном режиме. Что касается памяти то можно посмотреть размер оперативной памяти Linux, количество свободной памяти, размер раздела подкачки, кэширование и виртуальную память. И все это в реальном времени. Для установки выполните:
sudo apt install nmon
Чтобы утилита отобразила память поле её запуска надо нажать клавишу M:

9. ps
Команда ps может показать использование памяти для каждого процесса в реальном времени. Показывается процент используемой памяти (MEM), общее количество виртуальной памяти (VSZ) общий объем физической памяти (RSS) Вы также можете отсортировать список процессов с помощью опции —sort. Например, для сортировки по убыванию rss используйте:
ps aux —sort -rss

10. smem
Команда smem позволяет измерить количество памяти используемое различными процессами и пользователями на основе информации взятой из /proc. Она показывает количество ресурсов в процентном соотношении. Для установки выплните:
sudo apt install smem
Данные могут быть экспортированы в виде диаграмм, таких как круговые графики:
sudo smem —pie name -c «pss»

11. top
Команда top выводит список запущенных процессов в режиме реального времени, а также различные статистические данные для каждого из них. Вы можете сортировать список процессов по использованию памяти.

12. vmstat
Утилита командной строки vmstat отображает статистические данные по использованию CPU, памяти, прерываний и ввода вывода на диск. Команда показывает не только физическую память (всего, использовано, кэшировано, буферизировано), но и статистику по виртуальной памяти (количество страниц в подкачке и т д)

13. dmidecode
Утилита dmideocde позволяет просматривать информацию об аппаратном обеспечении подключенном к материнской плате компьютера, в том числе и об оперативной памяти. Это чуть ли не единственный способ узнать количество слотов для памяти, количество установленных планок, а также здесь отображается напряжение питания и частота оперативной памяти. Для просмотра информации именно про память выполните:
sudo dmidecode -t 17

14. lshw
Команда lshw тоже позволяет просматривать информацию об оборудовании компьютера, выводит практически аналогичные данные, что и dmidecode, только по русски и в более удобном формате:
sudo lshw -class memory

Выводы
Из этой статьи вы узнали множество способов как узнать оперативную память Linux, как видите, существует просто огромное количество методов в зависимости от ваших потребностей. Я, обычно, смотрю свободную память с помощью утилиты free. А какие инструменты используете вы? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Похожие записи
Оцените статью
(6 оценок, среднее: 5,00 из 5)
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
9 комментариев к “Как узнать оперативную память Linux”
Ваш сайт все интереснее от стать к статье. Ответить
Возможно не совсем в тему. Подскажите пожалуйста почему Linux Mint 17, может не видеть оперативную память? В биосе определяется 2 Гб, Win XP, установленная на этом же компьютере, тоже определяет 2 Гб, Mint, упорно показывает 1. В какую сторону думать? Ответить
Даже не знаю. попробуйте поспрашивать на специализированных форумах по аппаратному обеспечению. Ответить
Я грешу на опцию ядра highmem, но как проверить не знаю. Может попробывать другую версию ядра, сейчас стоит 3.13.0.24, не подскажите какое ядро лучше поставить? Ответить
Ставьте 4.4 или 4.6. Обычно во всех современных дистрибутивах ядро собрано с поддержкой highmem, но можете попробовать пересобрать. Также можно попробовать указать количество памяти в параметрах загрузки ядра с помощью опции mem (в мегабайтах) Ответить
Это в файле /boot/grub/grub.cfg?
Почему используется виртуальная память, когда ещё физической (озу) достаточно?
В sysctl.conf добавил
vm.swappiness = 10
vm.vfs_cache_pressure = 1000
ОЗУ 8ГБ, при 1-1,5ГБ уже используется swap, хотя должен при 10% свободной. Linux Debian 8. На Ubuntu Server 14.04 LTS эти же настройки работали. Ответить
Сервер на debian 14.04
на борту MySQL и nginx с виртуальными хостами
Ужасно тормозят сайты использующие локальную БД (одна страница может открываться до 60 секунд)
При таком раскладе это нормально (дело в нехватки ОЗУ? ведь в кэше 2549976 kB) или ковырять конфиги MySQL? $ cat /proc/meminfo MemTotal: 4043988 kB
MemFree: 246324 kB
MemAvailable: 2816676 kB
Buffers: 217996 kB
Cached: 2549976 kB
SwapCached: 0 kB
Active: 2036160 kB
Inactive: 1559340 kB
Active(anon): 442784 kB
Inactive(anon): 453880 kB
Active(file): 1593376 kB
Inactive(file): 1105460 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8388604 kB
SwapFree: 8388352 kB
Dirty: 100 kB
Writeback: 0 kB
AnonPages: 827528 kB
Mapped: 100952 kB
Shmem: 69136 kB
Slab: 166384 kB
SReclaimable: 149268 kB
SUnreclaim: 17116 kB
KernelStack: 2608 kB
PageTables: 11508 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 10410596 kB
Committed_AS: 1655292 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 690176 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 58944 kB
DirectMap2M: 4132864 kB $ free -h total used free shared buffers cached
Mem: 3.9G 3.6G 232M 67M 213M 2.4G
-/+ buffers/cache: 1.0G 2.9G
Swap: 8.0G 252K 8.0G Ответить
Источник: losst.pro