0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

针对Ampere Altra系列处理器的Memcached优化指南

安晟培半导体 来源:安晟培半导体 2023-08-08 09:28 次阅读

概 述

Memcached是一个开源的内存键值数据存储系统,通常用于缓存任意类型的小块数据,如字符串,或数据库和 API 调用结果中的对象。由于其基于内存的特性,Memcached 旨在通过在 RAM 中缓存数据和对象来加速动态 web 应用程序,并减少数据库查找。它是云计算中最具开创性的缓存存储之一,至今仍很受欢迎。

本指南的目的是描述在 AmpereAltra处理器上以最佳方式运行 memcached 的相关技巧。

构建先决条件

实现应用程序的高性能运行,首先要正确构建应用程序并使用适当的编译器标志(flag)。在我们的例子中,当在 Ampere Altra 处理器上构建 memcached 时,我们建议使用 GCC 编译器版本 10 或更新的版本从源代码进行构建。较新的编译器往往对新的处理器特性有更好的支持,并结合了更高级的代码生成技术。

我们使用 CentOS8 作为我们本次优化测试的操作系统

从 SCL 存储库下载并安装 GCC 10:

sudo yum -y install yum install scl-utils scl-utils-build 
sudo yum -y install gcc-toolset-10-gcc 
scl enable gcc-toolset-10 bash

对于其他操作系统,如 Ubuntu 20.04 LTS 和 Debian, GCC 10.2.1 也是可用的,可直接从相应的存储库安装。

Libevent 是构建 memcached 所必需的,可以如下方式下载:

sudo yum install libevent-devel

构建和安装

Memcached wiki 上的安装指南(https://github.com/memcached/memcached/wiki/Install)有关于在 Debian/Ubuntu 和 Redhat/Fedora 上安装 Memcached 的说明。源代码可在 memcached 项目页面上获得。我们建议使用最新的稳定版本。

memcached 项目页面

可以使用以下命令下载 Memcached。

wget https://memcached.org/latest 
#you might need to rename the file 
tar -zxf memcached-1.x.x.tar.gz 
cd memcached-1.x.x

在继续为 Memcached 配置构建选项之前,让我们添加一些特定于 Ampere Altra 处理器的编译器标志:

./configure CFLAGS="-O3 -march=native -mcpu=neoverse-n1" --prefix=/usr/local/memcached 
make && make test && sudo make install

KERNEL 优化

众所周知,Memcached 占用大量网络资源,为了获得良好的性能,内核和网卡(NIC)的调优是必要的。

大多数内核调优配置可以通过 sysfs 文件系统修改数据结构来设置。但是,有些调整可能需要重新编译内核。一般的内核优化措施是设置操作系统使用 64 KB 的页面大小。这将提高 Ampere Altra 处理器上的翻译暂置缓冲区(TLB)的效率。

查看系统上正在使用的页面大小:

getconf PAGESIZE

对于 64 KB 的页面大小,预期返回值 65536。如果不是这样,请检查 CONFIG_ARM64_64K_PAGES 是否已应用于内核配置文件,重新编译并安装内核,然后重新启动。

CONFIG_ARM64_64K_PAGES=y

TUNED PROFILES

考虑到大量的内核配置选项,有时使用预定义的优化配置文件来匹配您的使用场景会更容易。Tuned 就是这样一种调优服务,它可以通过设置调优配置文件来配置操作系统来提高性能。

以 CentOS 8 为例,如果 Memcached 的吞吐量是所关注的主要指标,我们建议使用吞吐量-性能(throughput-performance)的 Tuned Profile。该配置文件将 CPU 调控器(governors)设置为性能模式,这样可以减少调度延迟,最大化 I/O 吞吐量,并减少交换度值(swappiness),所有这些都可以显著提高性能。

对于 Ubuntu,如果它不是操作系统安装的一部分,则可能需要单独安装 tuned profile。

sudo apt-get update -y 
sudo apt-get install -y tuned

为了改进 Ampere Altra 处理器上的内核调度延迟,我们建议通过更新 Tuned Profile 文件中的相应设置,将 sched_wakeup_granularity_ns 更改为 5000。

PROFILE_FILE=/usr/lib/tuned/throughput-performance/tuned.conf 
sed -i 's/sched_wakeup_granularity_ns = 15000000/sched_wakeup_granularity_ns = 5000/g' $PROFILE_FILE

然后使用以下命令启用吞吐量-性能(throughput-performance)的 Tuned Profile:

tuned-adm profile throughput-performance

网络设置

像 Memcached 这样的应用程序通常被调优为在高吞吐量下运行,同时保持严格的服务水平协议(SLA)。p.99 延迟通常是一个常见的标准。为了考虑此类 SLA 的要求,我们建议调优内核 TCP/IP 设置,因为传入的请求是通过 TCP 连接建立的。

我们在 Memcached 测试中使用的 TCP/IP 调优设置列表如下:

echo 9999999 > /proc/sys/net/core/somaxconn 


echo 4194304 > /proc/sys/net/core/rmem_max 


echo 4194304 > /proc/sys/net/core/wmem_max 


echo 4194304 > /proc/sys/net/core/rmem_default 


echo 4194304 > /proc/sys/net/core/wmem_default 


echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_rmem 


echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_wmem 


echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_mem 


echo 250000 > /proc/sys/net/core/netdev_max_backlog 


echo 50 > /proc/sys/net/core/busy_read 


echo 50 > /proc/sys/net/core/busy_poll 


echo 3 > /proc/sys/net/ipv4/tcp_fastopen 


echo 0 > /proc/sys/kernel/numa_balancing 


echo 0 > /proc/sys/net/ipv4/tcp_timestamps 


echo 1 > /proc/sys/net/ipv4/tcp_low_latency 


echo 0 > /proc/sys/net/ipv4/tcp_sack 


echo 1 > /proc/sys/net/ipv4/tcp_syncookie

除了内核 TCP/IP 设置之外,我们还需要确保应用程序能够利用大多数网卡(NIC)内置的硬件卸载功能,例如 Generic-Receive-Offload,它可以聚合属于同一流的多个传入数据包,以及 large - receive - offload,它可以将属于同一连接的传入 TCP/IP 数据包合并到一个大的接收段中,然后将其传递给内核。

具体操作如下:

ethtool -K  gro on 
ethtool -K  lro on

对于像 Memcached 这样的网络绑定(network-bound)工作负载,强烈建议将网卡中断(irq)分布在多个核心上,以避免出现瓶颈。参考文档 2 是关于 SMP IRQ 关联的一个非常好的参考。

建议使用以下命令检查网卡支持的硬件通道数量,以确保通道数量与网卡的通道容量匹配:

ethtool -l  
sudo ethtool -L  combined 

MEMCACHED 配置

Memcached 本身是可以做些调优来更好地匹配实际应用环境。调优它的一个很好的起点是 Memcached 内置的统计功能。可以通过使用 telnet 连接到 memcached 并运行它来研究统计数据:

telnet localhost 11211 


Connected to localhost. 


Escape character is '^]'. 


telnet> stats 


STAT pid 23599 


STAT uptime 675 


STAT time 1211439587 


STAT version 1.2.5 


STAT pointer_size 32 


STAT rusage_user 1.404992 


STAT rusage_system 4.694685 


STAT curr_items 32 


STAT total_items 56361 


STAT bytes 2642 


STAT curr_connections 53 


STAT total_connections 438 


STAT connection_structures 55 


STAT cmd_get 113482 


STAT cmd_set 80519 


STAT get_hits 78926 


STAT get_misses 34556 


STAT evictions 0 


STAT bytes_read 6379783 


STAT bytes_written 4860179 


STAT limit_maxbytes 67108864 


STAT threads 1 


END

get_hits 和 get_misses 值特别重要,它们可用于计算 Memcached 的缓存命中/未命中比率。像 Memcached 这样的内存缓存的经验法则是将缓存命中率保持在 90% 以上。

清除值(evictions value)计算从缓存中清除的未过期项的数量,以便为新项腾出空间。清除次数过多可能表明缓存过度使用或分配的内存量不足。

最后,Memcached 线程的数量可能是影响 Memcached 总体性能的一个设置。对于像 Ampere Altra 系列处理器这样的高核数处理器,我们建议在研究性能扩展时增加线程数量以使用尽可能多的核。极高的线程数可能导致锁争用,从而降低性能。在启动 Memcached 时,可以通过使用 -t 选项来更改线程数。

在生产环境中对 Memcached 这样的应用程序进行微调需要对其用法和端到端软件堆栈有深入的了解。我们希望本指南中讨论的设置可以帮助提高 Memcached 的性能,并建议参考这里提供的所有配置选项,以更好地匹配您的使用。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19118

    浏览量

    228872
  • 操作系统
    +关注

    关注

    37

    文章

    6699

    浏览量

    123151
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49019
  • Memcached
    +关注

    关注

    0

    文章

    12

    浏览量

    7002
  • Ampere
    +关注

    关注

    1

    文章

    61

    浏览量

    4530

原文标题:安博士讲堂|针对 Ampere® Altra® 系列处理器的 Memcached 优化指南

文章出处:【微信号:AmpereComputing,微信公众号:安晟培半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Ampere推出业内首款拥有最多内核数量的云原生处理器系列

    Ampere Altra系列提供了解决各种工作负载的灵活性,并且Ampere正在与生态系统中的伙伴合作,以满足客户的特定需求。
    发表于 06-28 16:44 1518次阅读

    业界首款!Ampere发布有80个核心的ARM处理器

    今天晚上,Ampere发布了Ampere Altra处理器,官方称这是业界首款80核服务处理器
    的头像 发表于 03-04 10:11 2575次阅读

    Ampere发布业内首款80核ARM架构64位处理器Altra 并已开始向云服务和边缘计算客户出样

    高性能计算公司Ampere今日发布了业内第一款80核ARM架构64位处理器Altra,其用于服务、数据中心产品,目标是与Intel、AMD所代表的x86阵营竞争。
    发表于 03-04 11:33 1310次阅读

    Ampere全新推出业界首款80核服务处理器Ampere Altra处理器

    安晟培半导体科技有限公司(Ampere Computing)于今日正式发布全新一代Ampere Altra处理器,此款产品是业界首款搭载80个内核数量的服务
    发表于 03-05 07:53 1312次阅读

    安晟培半导体Ampere Altra处理器推出,应用于云和边缘计算数据中心中

    3月4日消息,据国外媒体报道,安晟培半导体科技有限公司(Ampere Computing,简称“安晟培半导体”)发布Ampere Altra处理器,这是业界首款搭载80个内核数量的服务
    的头像 发表于 03-04 17:03 3132次阅读

    详细解说Ampere Altra性能测试与结果对比

    现代云对更高的性能,更好的可扩展性,能源效率的需求在不断增长。去年年初发布的业内首款云原生处理器AmpereAltra,以全新设计以满足现代云的需求,具有令人瞩目的整数性能,高内核数和出色的能源效率等特点,Ampere Altra
    的头像 发表于 03-24 15:13 7298次阅读
    详细解说<b class='flag-5'>Ampere</b> <b class='flag-5'>Altra</b>性能测试与结果对比

    Ampere Altra处理器实现Arm架构运行虚拟机

     近日,微软推出了基于 Ampere Altra 云原生处理器的 Azure 虚拟机(VM)。
    的头像 发表于 04-10 10:16 3406次阅读

    HPE正式发布搭载Ampere云原生处理器的HPE ProLiant RL300 Gen11平台

    在今年的 HPE Discover 2022 全球峰会上,HPE 宣布正式发布搭载 Ampere AltraAmpere Altra Max 云原生
    的头像 发表于 07-13 11:40 2165次阅读

    Ampere Computing发布全新AmpereOne系列处理器,192个自研核

    2023 年 5 月 19 日,中国北京——Ampere Computing 宣布推出全新 AmpereOne 系列处理器,该处理器拥有多达 192 个单线程
    的头像 发表于 05-19 11:04 1235次阅读

    Ampere全新AmpereOne系列处理器,多达192个单线程Ampere

    强调Ampere凭借过去Ampere AltraAmpere Altra Max处理器创建了云
    发表于 05-23 11:44 466次阅读

    Ampere发布AmpereOne系列处理器,单颗处理器支持最高192个物理核心

    AmpereOne出现以前,Ampere Altra系列最多128核心,新的AmpereOne则是从136核起步,最多192核心。所以,AmpereOne可以看做是Ampere
    发表于 06-02 10:43 590次阅读
    <b class='flag-5'>Ampere</b>发布AmpereOne<b class='flag-5'>系列</b><b class='flag-5'>处理器</b>,单颗<b class='flag-5'>处理器</b>支持最高192个物理核心

    Ampere Altra系列处理器的锁和内存序

    的 Arm 版本在功能上可以很好地工作,但随着核心数量的增加和锁的争用更加频繁,预计性能会受到影响。Ampere AltraAmpere Altra Max 支持 LSE,并配备
    的头像 发表于 06-07 17:36 1399次阅读
    <b class='flag-5'>Ampere</b> <b class='flag-5'>Altra</b><b class='flag-5'>系列</b><b class='flag-5'>处理器</b>的锁和内存序

    全新AmpereOne系列处理器,一款192核的云原生CPU

    这个基于自研内核打造的产品与之前的产品不会存在任何的兼容问题,因为AmpereOne系列处理器Ampere Altra系列
    发表于 06-08 11:50 904次阅读
    全新AmpereOne<b class='flag-5'>系列</b><b class='flag-5'>处理器</b>,一款192核的云原生CPU

    针对Ampere Altra处理器的MongoDB优化指南

    MongoDB 是一个流行的面向文档的,跨平台开源 NoSQL 数据库。其灵活的数据模型能支持存储具有完整索引支持和复制的非结构化数据。根据 DB-Engines 的数据,截至 2023 年 1 月,MongoDB 是第五大最受欢迎的数据库。它是用 c++ 编写的,旨在为 web 应用程序提供可扩展的高性能数据存储解决方案。
    的头像 发表于 07-20 10:10 538次阅读

    基于Ampere Altra 系列处理器的一系列平台为 AI 高效赋能

    ,‘芯’未来”的主题,Ampere 在本次活动上展示了基于 Ampere Altra 系列处理器的一系列
    的头像 发表于 09-21 09:13 838次阅读