Avamar:如何通过调整哈希和文件缓存来控制 Avtar 内存利用率
Summary: 通过调整哈希和文件高速缓存、用标记覆盖默认限制以及定制高速缓存大小以提高性能,优化 Avamar 内存利用率。
Instructions
解决以下问题的信息: avtar 内存利用率:
当发生以下情况时,客户端上的整体内存使用有三个主要影响因素: avtar 运行:
1.如果您主要使用 CIFS/NFS 来写入备份,则应使用 avtar 在执行备份时,二进制文件本身需要内存(也称为 snapup)时,此方法起作用。占用的内存量 avtar 进程通常在 20 MB 到 30 MB 的范围内。此数量取决于客户端运行的作系统,并且在备份期间也会根据被抢购的文件的结构而波动 avtar。
2.如果您主要使用 CIFS/NFS 来写入备份,则应使用 avtar 进程将两个缓存文件加载到内存中。这两个缓存文件存在于 Avamar var 目录中。第一个是文件缓存 (f_cache.dat)时,此方法起作用。文件缓存存储文件属性的哈希值,用于快速识别哪些文件之前已备份到 Axion (又称 Avamar)服务器。文件缓存的存在是随后 Axion 备份(即初始备份之后)通常非常快。通常,文件高速缓存会筛选掉大约 95% 到 98% 的文件。如果文件高速缓存被删除、未使用或规模过小,则必须打开、读取、分块和散列文件高速缓存中未“命中”的每个文件,然后才能 avtar 进程发现哈希之前已发送到 Axion 服务器并在该服务器上使用。如果某个文件在文件缓存中出现“命中”,则永远不会访问该文件,从而节省大量时间和 CPU。
默认情况下,文件高速缓存最多可以占用 1/8 上的物理 RAM Axion 客户。例如,如果客户端具有 4 GB RAM,则文件高速缓存的最大限制为 512 MB。每次必须增长时,文件缓存的大小都会翻倍。当前的文件高速缓存大小为 5.5 MB、11 MB、22 MB、44 MB、88 MB、176 MB、352 MB、704 MB 等。在此示例中,客户端具有 4 GB RAM,则文件缓存的最大大小限制为 352 MB。
3.第二个缓存是哈希缓存 (p_cache.dat)时,此方法起作用。哈希缓存存储已发送到 Axion 服务器并在该服务器上使用。如上所述, avtar 通过确保文件高速缓存的大小足够大,进程可以获得最高效率。如果哈希缓存被删除、未使用或规模过小,则如果 avtar 进程发现未包含在散列缓存中的区块的哈希值,即 avtar 处理查询 Axion 服务器,以了解是否存在哈希。
默认情况下,哈希缓存最多可以占用 1/16 上的物理 RAM Axion 客户。在前面具有 4 GB RAM 的客户端示例中,哈希高速缓存的最大大小限制为 256 MB。每次必须增长时,哈希缓存的大小也会翻倍。当前哈希高速缓存大小为 24 MB、48 MB、96 MB、192 MB、384 MB、768 MB 等。在此示例中,客户端具有 4 GB RAM,哈希高速缓存的最大大小限制为 194 MB。
综上所述,可以推断,如果客户端的 RAM 超过 1/2 GB,则文件和哈希缓存将主导整体内存利用率。这是因为两个高速缓存在开始时会完全读入内存中 avtar 备份。此外,如上图所示,默认情况下,使用 avtar 限制为上物理 RAM 的大约 3/16 Axion 客户。
文件和哈希高速缓存的大小打印在 avtar 日志。
例如:
avtar Info <5573>: - Loaded cache file C:\ProgramFiles\Avamar\var\f_cache.dat (5767712 bytes)
avtar Info <5573>: - Loaded cache file C:\ProgramFiles\Avamar\var\p_cache.dat (25166368 bytes)
此处的文件缓存为 5.5 MB,散列缓存为 24 MB。
在末尾 avtar 日志中,将会看到以下几组消息:
avtar Info <5587>: Updating cache files in C:\ProgramFiles\Avamar\var
avtar Info <5069>: - Writing cache file C:\ProgramFiles\Avamar\var\f_cache.dat
avtar Info <5546>: - Cache update complete C:\ProgramFiles\Avamar\var\f_cache.dat (5.5MB of 63MB max)
avtar Stats <6151>: File cache: 131072 entries,added/updated 140, booted 0
avtar Info <5069>: - Writing cache file C:\ProgramFiles\Avamar\var\p_cache.dat
avtar Info <5546>: - Cache update complete C:\ProgramFiles\Avamar\var\p_cache.dat (24.0MB of 31MB max)
avtar Stats <6152>: Hash cache: 1048576 entries,added/updated 1091, booted 0
从这些行中可以看出文件缓存有增长的空间,但哈希缓存处于最大值。如果任一高速缓存大小不足,“已启动”值将为非零,并且日志将包括高速缓存大小过小的警告。请务必注意这一点,因为高速缓存的大小对整体性能有巨大影响。
可以使用以下两个标记覆盖默认高速缓存限制高速缓存:
--filecachemax=n
其中 n 是 MB 数或分数(负值 = RAM 分数)
默认值:
--filecachemax=-8
示例:将文件高速缓存限制为 100 MB 大小:
--filecachemax=100
--hashcachemax=n
其中 n 是 MB 数或分数(负值 = RAM 分数)
默认值:
--hashcachemax=-16
另一个实现注意事项是,如果缓存大小在一组客户端上受到限制,则应将适当的参数添加到每个客户端的 avtar.cmd 文件,以便在每次客户端执行备份(甚至是手动备份)时应用它。如果avtar.cmd文件中没有标记,并且在没有适当选项的情况下执行手动备份,则文件或哈希缓存可能会增长回其默认限制。
要调整性能,有时需要从默认值增加高速缓存大小。
这些条件可能存在于以下两种截然相反的情况中:
1.如果客户端有数百万个小文件,则文件缓存可能需要从默认大小开始增加。一般的指导原则是,对于 Axion client,客户端应具有 512 MB 的物理 RAM。
如果客户端有 100 万个文件,则存储单个备份的文件哈希值至少需要 20 MB(每个哈希值为 20 字节)。由于必须存储多个备份的文件哈希,因此需要存储更多,这意味着它将增长到大约 44 MB。由于默认使用物理 512 MB RAM 的 1/8,因此允许高速缓存增长到 64 MB 的限制,因此文件高速缓存的 RAM 的 1/8 值就足够了。
2.如果客户端有一些大文件,则哈希高速缓存的默认值 1/16 可能不够。
例如,如果存在 200 GB 数据库,则必须缓存最多 1000 万个哈希值。由于每个哈希为 20 字节,因此单个备份至少需要 200 MB。
下一个可用增量为 384 MB,因此如果此客户端具有 4 GB RAM,则必须允许哈希缓存增长到 RAM 的 1/8。如果使用默认值 1/16 的 RAM,则散列高速缓存限制为 192 MB,并且散列高速缓存将过小。对于数据库,由于备份的文件很少,文件缓存要小得多,因此净内存利用率仍约为 RAM 的 1/8 到 3/16。
要在任何给定环境中更系统地解决此问题,请从 avtar 记录文件和哈希缓存的大小。
如果这些缓存的组合大小必须较小,则可以通过多种方式限制大小。
如果必须限制高速缓存大小,请记住以下事项:
- 对于典型的文件服务器,在没有哈希缓存的情况下运行要比在没有文件缓存的情况下运行要好得多
- 对于典型的数据库服务器,在没有文件高速缓存的情况下运行要比在没有散列高速缓存的情况下运行要好得多。