Visual Studio 应用程序是 32Bit 吗,因此只能处理最大 4GB 内存?
我已经为一个课程编写了一个程序,我的教授将在各种低内存环境中测试该程序,以查看当程序内存不足时它的行为。有没有一种方法可以在不创建虚拟机的情况下在低内存环境中模拟执行?
UNIX 多任务处理在没有虚拟内存的情况下如何工作?应用程序不是仍然需要自己的内存空间吗?或者应用程序是否必须知道现在所有可见的内存空间都是他们的?
(注意避免混淆:“虚拟内存”是指虚拟化内存,而不是交换文件。)
有时我在 Ubuntu 的系统管理器中观察到没有完全使用物理 RAM,交换内存开始被使用。
为什么会这样?
我遵循了这个建议来让 Windows 使用更多的内存和更少的分页。老实说,我对所有这些页面文件内容完全是个菜鸟。我一直只是假设 Windows 使用的是我安装的 8 GB 内存。
我很困惑,因为任务管理器的性能选项卡仍然说它在任何给定时间只使用 12%-16% 的物理内存,即使在执行游戏和图像编辑等内存密集型任务时也是如此。
这是它的分解方式:
Physical Memory (MB)
Total: 8191
Cached: 6311
Available: 7051
Free: 808
Usage: 14%
Kernel Memory (MB)
Paged: 264
Nonpaged: 63
Run Code Online (Sandbox Code Playgroud)
当巫师正在运行时又是这样:
Physical Memory (MB)
Total: 8191
Cached: 6313
Available: 6504
Free: 250
Usage: 20%
Kernel Memory (MB)
Paged: 268
Nonpaged: 64
Run Code Online (Sandbox Code Playgroud)
第一个问题:如果我没看错的话,虚拟内存中仍然有 264 MB 的 Windows 内核“东西”。如果我关闭带有 Windows 的 SSD 的页面文件,这不应该更像是 0 MB 吗?
第二个问题:如果RAM中还有6311 MB,总共8191 MB,为什么它说我的物理内存使用率只有这么低?我上次检查时,大约为 77%。
最后一个问题:我的另一个硬盘驱动器上没有任何程序,那么为什么我需要“将页面文件从 SSD 移动到存储硬盘驱动器”,如该论坛链接中所述?
有人可以澄清一下 PCI/PCIe 总线上的内存和 I/O 地址之间的区别吗?
我知道 I/O 地址是 32 位的,限制在 0 到 4GB 的范围内,并且不映射到系统内存 (RAM),并且内存地址是 32 位或 64 位。
我的印象是内存寻址必须映射到可用的 RAM 上,这是真的吗?如果 PCI 设备希望将数据传输到内存地址,则该地址必须存在于实际系统 RAM(并在 PCI 配置期间分配)而不是虚拟内存中。
因此,如果 PCI 设备一次只需要传输少量数据,而将其放入 RAM 或使用 DMA 没有优势,那么 I/O 寻址就可以了(例如在 PCI 卡上实现的并行端口) .
为什么我一直读到 PCI/PCIe I/O 寻址已被弃用,而取而代之的是内存寻址?
谢谢!
我已经使用 imdisk http://www.ltr-data.se/opencode.html/
使用命令http://diddy.boot-land.net/firadisk/files/imdisk.htm创建了一个虚拟 USB 可移动磁盘(例如imdisk -a -s 2104515b -m R: -f C:\my_disk.ima -p "/FS:NTFS /C /Y"
创建 my_disk.ima 并将其格式化为压缩的 ntfs 驱动器,然后挂载到 r:)
但我如何将其安装到 Virtual Box,它不会出现在添加 USB 过滤器中
windows-7 virtualbox virtual-memory usb-storage usb-flash-drive
我在swapon -s
我正在使用的 VPS 上运行,发现有一个交换分区指向/dev/null
.
# swapon -s
Filename Type Size Used Priority
/dev/null partition 262144 0 -1
Run Code Online (Sandbox Code Playgroud)
这是否意味着没有任何实际的交换,交换出的任何东西都会丢失?这比根本没有任何交换更好/更糟吗?
的输出df -h
:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/ploop63064p1 20G 1.3G 18G 7% /
none 128M 4.0K 128M 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 26M 40K 26M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 128M 0 128M 0% /run/shm
none 100M 0 100M 0% /run/user
Run Code Online (Sandbox Code Playgroud)
的输出cat …
以下是输出 cat /proc/cpuinfo
user@localhost:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz
stepping : 3
microcode : 0x12
cpu MHz : 800.000
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : …
Run Code Online (Sandbox Code Playgroud) 我真的不知道问我问题的更好方法,因此你得到了一个可怕的问题。
我会解释我想做什么,也许这会帮助你帮助我。
我想让我的 linux 机器持续监控(每 10 分钟)我机器上的所有进程。我需要的每个进程的信息是名称、CPU 使用率、分配的(虚拟)内存和驻留(ram)内存。
如果要查看这些定期报告,它们将如下所示:
PROCESS CPU RAM VIRTUAL
name1 % MB MB
name2 % MB MB
...etc..etc
Run Code Online (Sandbox Code Playgroud)
这些报告应该以这样的方式存储,以便我可以在以后通过提供日期/时间范围(范围)来访问它们。例如,如果我想查看从 12:00:00 1.12.12 到 12:00:00 2.12.12 的进程历史记录,我可以 - 它应该每 10 分钟给我一次进程的历史记录日期/时间边界。
返回的格式并不重要,无论如何都会由脚本处理,并且可以修改为我需要的任何内容。
到目前为止,我已经研究了一些东西,但还没有找到明显满足我需求的东西。我搜索的内容包括:sar、free(1)、top(1) .. 以及其他一些内容。
这应该是一个简单的问题,我已经可以通过简单地查看我htop
的 .基于日期/时间范围(范围)的数据。
注意:我对linux的经验有限,所以请提供详细信息。
注意2:所需的输出将是这样的(在收到所需的范围后)
CPU USAGE BY PROCESS:
proc_nameA 1,2,2,2,2,2...... numbers represent % usage every 10 minutes...
proc_nameB 4,3,3,6,1,2......
Run Code Online (Sandbox Code Playgroud)
与其他信息相同的想法。
virtual-memory ×10
memory ×4
linux ×3
swap ×2
windows-7 ×2
cpu ×1
cpu-usage ×1
memory-limit ×1
pagefile ×1
pci ×1
process ×1
task-manager ×1
ubuntu ×1
unix ×1
usb-storage ×1
virtualbox ×1
windows ×1