Windows Core EKS 节点管理命令
windows 查看磁盘空间的使用情况:
Get-PSDrive -Name C | Select-Object Name, Free
windows 实例的磁盘空间扩容
diskpart
list volume
select volume 0
extend
从ecr下载镜像
$ecrCreds = (Get-ECRLoginCommand).password
Write-Host $ecrCreds
ctr -n k8s.io image pull -u AWS:$ecrCreds ecr link
pull image 需要使用节点的C盘空间, 在节点的磁盘空间不足的情况下,会报错。
rpc error: code = Unknown desc = failed to pull and unpack image
failed to extract layer sha256:9ee7a25f1f619685e0c27cd1f08b34fd7a567f8f0fa789gf9aeb79c72169afa: hcsshim::ImportLayer failed in Win32: There is not enough space on the disk. (0x70): unknown
TrueNas Scale 让 ZFS 占用更多内存作为 ARC
TrueNas ScaleSome param can use to tunning Memory Usage :
Config the ARC Memory to 75% Total Memory :
root@haydentruenas:/sys/block# echo 2995556352 > /sys/module/zfs/parameters/zfs_arc_maxroot@haydentruenas:/sys/block# echo 268435456 > /sys/module/zfs/parameters/zfs_arc_sys_free
#!/bin/sh
PATH="/bin:/sbin:/usr/bin:/usr/sbin:${PATH}"
export PATH
ARC_PCT="90"
ARC_BYTES=$(grep '^MemTotal' /proc/meminfo | awk -v pct=${ARC_PCT} '{printf "%d", $2 * 1024 * (pct / 100.0)}')
echo ${ARC_BYTES} > /sys/module/zfs/parameters/zfs_arc_max
SYS_FREE_BYTES=$((8*1024*1024*1024))
echo ${SYS_FREE_BYTES} > /sys/module/zfs/parameters/zfs_arc_sys_free
在EC2实例每次启动的时候都运行Userdata
使用Cloud-init提供读取Userdata的功能。
需要在Userdata中添加一个 MIME 的头部, 覆盖默认的行为。
https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archivehttps://repost.aws/zh-Hans/knowledge-center/execute-user-data-ec2
具体需要添加的MIME 部分:
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
之后重新启动这个EC2 就可以了。
Troubleshooting Guide
首先可以的查看Userdata , 在控制台 或者 AWScli
查看实例内部日志 或者 Console的日志:/var/log/cloud-init.log/var/log/cloud-init-output.log
查看userdata 注入的脚本内容:/var/lib/cloud/instances/i-09e08d362af7fa401/scripts 在这个目录下。文件树 : [root@ip-172-31-50-3 i-09e08d362af7fa401]# tree
.
├── boot-finished
├── cloud-config.txt
├── datasource
├── handlers
├── obj.pkl
├── scripts # 这个
│ ├── part-001
│ └── part-002
├── sem
│ ├── config_amazonlinux_repo_https
│ ├── config_disk_setup
│ ├── config_keys_to_console
│ ├── config_locale
│ ├── config_mounts
│ ├── config_phone_home
│ ├── config_power_state_change
│ ├── config_resolv_conf
│ ├── config_rsyslog
│ ├── config_runcmd
│ ├── config_scripts_per_instance
│ ├── config_scripts_user
│ ├── config_set_hostname
│ ├── config_set_passwords
│ ├── config_ssh
│ ├── config_ssh_authkey_fingerprints
│ ├── config_timezone
│ ├── config_users_groups
│ ├── config_write_files
│ ├── config_write_metadata
│ ├── config_yum_add_repo
│ ├── config_yum_configure
│ └── consume_data
├── user-data.txt
├── user-data.txt.i
├── vendor-data.txt
└── vendor-data.txt.i
3 directories, 33 files
如果需要临时的改一些内容, 可以写在Userdata里面, 完成操作之后删除Userdata 就可以了。
Linux_Kubernetes常用debug命令
查看 AWS LoadBalancer 证书的信息,检查证书的有效期:
kubectl get validatingwebhookconfigurations.admissionregistration.k8s.io aws-load-balancer-webhook -ojsonpath={.webhooks[0].clientConfig.caBundle} | base64 -d | openssl x509 -noout -text
使用 debug 容器:
# 给特定的容器附加一个Sidecar, 并启动shell。
kubectl debug -it --image=public.ecr.aws/amazonlinux/amazonlinux:latest aws-node-cpmck
# netshoot容器, 比较方便的用来进行网络部分的调试。
# 项目仓库地址: https://github.com/nicolaka/netshoot
kubectl debug mypod -it --image=nicolaka/netshoot
正见——佛陀的证悟(三)诸法无我 (选摘)
所有这些不同的情绪及其结果,都来自于错误的理解,而这个误解来自一个源头,也就是所有无明的根源—-执着于自我。
自我只是另一个误解。当我们看着自己的身体(色)、感受(受)、想法(想)、行为(行)和意识(识)的时候,我们通常制造出一种自我的概念。人们受制约,把这种概念视为恒常而且真实的。
但是悉达多了悟到,不论是在身体里或外,都找不到一个独立存在的实体,足以被称为自我。如同火圈的视觉错幻一般,自我也是虚幻的。它是谬误的;基本上错误,而究竟上不存在。但是如同我们被火圈所迷惑一般,我们也全都被自我所迷惑了,执着于谬误的自我,是无明的荒谬行为。它不断地制造更多的无明,导致了各种痛苦和失望。
无明单纯的就是不了解事实,或对事实了解不正确,或认识得不完整。所有这些形式的无明,都导致误解和误判,高估和低估。假设你正在寻找一个朋友,忽然看到他在远方的田野中。一走近,却发现你误把一个稻草人当做是他了。你一定会感到失望。这并非有个恶作剧的稻草人或你的朋友试图偷偷摸摸误导你,而是你自己的无明背叛了你。任何源自无明所做的行为,都是冒险。我们在不了解或不完全了解的情况下行动,就不会有信心。我们根本的不安全感因此而生起。创造出所有这些有名或无名、已知或未知的各种情绪。
悉达多了悟到自我并非独立存在、自我只不过是一个标签、因而执着于自我就是无明,这可能是人类历史上最大的发现。然而,虽然自我这个标签或许毫无根据,要摧毁它却不是一个简单的任务。执着于这个称作自我的标签,是所有的概念中最难以破除的。
魔罗只不过是悉达多的我执。故事中,描述魔罗是个英俊威武、无役不克的战士,这个比喻相当适切。自我,如同魔罗一般,威力强大且贪得无厌、自我中心且虚伪欺诈、贪求众人目光、机敏伶俐且爱慕虚荣。我们很难记住,自我如同火圈的幻相一般,是和合而成、不独立存在而且善于改变。
骄慢和自怜息息相关。我执纯粹是一种自我纵容,认为自己的生命比其他人的都更艰难更悲哀。当自我发展出自怜的时候,便让其它人生起悲悯的空间消失了。
虽然我们不认为自己这么绝望,而且相信自己是受过教育、正常、清醒的,但是当我们看见及感受一切都是真实存在时,我们的行为就如同那位沙漠中的迷失者。我们急切地想要找到真实的伴侣关系、安全感、表扬、成功,或只是安详宁静。我们甚至能抓到与欲望相似的东西。但就象那位迷失者,当我们依赖外在的实体性时,终究会失望。事物并不如其所显现—–它们是无常的,而且不完全在我们的掌控之中。
如果我们象悉达多一样确实地去分析,就会发现诸如形体、时间、空间、方向、大小等附加的标签,都很容易被解构。悉达多了悟到,甚至自我都只存在于相对的层次,恰如海市蜃楼一般。他的体悟,终止了期待、失望与痛苦的循环。在证悟的时刻,他自忖,我已找到了一条深奥、安详、非极端、清晰、满愿又有如甘露一般之道。然而,如果我想表达它,如果我想教给他人,没有人有能力听闻了解。因此我将留在林中,安住于此祥和状态之中。
然而,悉达多并非不理性,他只是明确地指出一般的、理性的思惟是有限的。我们不能,或不愿超越我们自己的舒适区去了解。用昨日、今日、明日这种线性的概念来操作,比如说“时间是相对的”,来得实用得多。我们没有被设定成这么想的:我能不改变大小或形状而进入那牦牛角。我们不能破除大和小的概念;相反的,我们一直被世代传下来的安全而狭隘的观点所局限。然而,当这些观点被审视时,却都站不住脚。举例来说,这个世界如此依赖的线性时间观念,无法说明时间没有真正的起始也没有终止的事实。
因此当我们听到一个人不改变尺寸,就可容入牦牛角中时,我们没有太多选择—–我们可以很“理性”,认为这根本不可能而驳斥它;或者我们引用某种对法术的神秘信仰或盲目崇拜而说,当然,密勒日巴是多么伟大的瑜珈行者,当然他能这么做,甚至还不只是这些呢。这两种见解都是扭曲的,因为否认是一种低估,而盲信则是一种高估。
一条河,水在流,永远在变,然而我们仍然称它为河流。如果一年之后我们再度造访,会认为它是同一条河。但它是如何相同的呢?如果我们单独挑出一个面向或特性,这相同性就不成立了。水不同了,地球在银河中转动的位置也不同了,树叶已落,新叶又长出来了—-剩下的只是一个相似于我们上次见到的河流表象而已。以“表象”作为“真实”的基础是相当不可靠的。经由简单的分析,就能显示出我们一般对所谓真实的基础,都只是一些模糊的概括和假设。虽然悉达多也使用一般人定义“真实”时所用的字眼—-非想象的、确定的、不改变的、无条件的—-但他更精确地使用这些字眼,而非概括性的。在他的观点上,不改变必然意指在所有的方面都不改变,甚至经过彻底的分析后,仍然绝无例外。
悉达多发现,要确定某个东西真实存在的唯一办法,就是证明它独立存在,而且不需要诠释、不能造作或不会改变。对悉达多而言,我们日常生活上一切似乎能作用的机制,不论是身体的、情感的及概念的,都是由不稳固、不恒常的部分所聚合而成,因此它们随时都在改变。我们可以在惯常的世界中了解这个论点。举例来说,你可以说你在镜中反射的影像不是真实存在的,因为他需要依赖你站在镜子前面才行。类似的,事物要真实或独立地存在,就不能被制作或被创造的,因为这要依赖制造者。
许多对佛陀的教法不甚了解的人,认为佛教是病态的,他们认为佛教徒否定快乐,只想到痛苦。他们设想佛教徒排斥美丽及身体的享受,因为这些是诱惑;佛教徒应该是纯净而节制的。事实上,在悉达多的教法中,并不特别反对美丽和享乐甚于其它的任何概念--只要我们不认为它们是真实存在的,而迷失其中。
虽然悉达多证悟了空性,但空性并不是由他或任何人所制造的。空性不是悉达多获得天启的结果,也不是为了让人们快乐所发展出来的理论。不论悉达多开示与否,空性即是如此。我们甚至不能说它一直都是如此,因为它超越时间,而且不具形式。空性也不应被解释为存在的否定(也就是说,我们不能说这个相对的世界不存在),因为要否定某个事物,你就要先承认有某个东西可以被否定才行。空性也不会消除我们日常的经验。悉达多从来没说过有什么可以取代我们所觉受的更壮丽、更美好、更纯粹或更神圣的东西。他也不是虚无主义者,否定世间存在事物的显现与功能。
悉达多会同意这两种情况--当你醒着时,你不能飞;而当你睡着时,你能飞。这道理是在于因缘是否具足;要能飞翔的一个缘,是睡眠。当你没有它,你就不能飞,有了它,你就能飞。假设你梦见你能飞,而醒来后还继续相信你能飞,那就麻烦了。你会掉下来,而且会失望。悉达多说,即使在相对世界中醒着,我们还是在无明中沉睡,如同在他出走那夜的宫女一般。恰当的因缘聚合时,任何事情都可能出现。但当因缘消散,显现也就停止。
这也是为何在悉达多教法一千五百年后,一位叫帝洛巴的佛法继承者,对他的学生那洛巴说,不是显现(外相)困住了你,而是你对显现(外相)的执着困住了你。
如同环球小姐选美一样,在这个世界上,我们所做、所想的任何事物,都有是基于一个非常有限的共同逻辑系统。我们非常强调共识。如果大多数人同意某件事物是真实的,通常它就变成正当有效的。当我们看着一个小池塘,我们人类认为它只是个池塘,但对池里的鱼儿来说,这是它们的宇宙。如果我们采取民主的立场,那么水中族群一定会赢,历为它们比我们这些观池塘者为数多得多。多数决不见得永远都对。糟糕的大卖座影片可以赚得大量的利润,而一部独立制作的优秀影片却只有少数人观赏。而且由于我们依赖群体思考,这世界通常是被最短视而腐败的统治者所治理;民主制度只是诉诸于最小公约数而已。
然而了悟不必是致命的。我们不需要象井蛙一般,面对空性惊吓而亡。如果海蛙能够有稍微多点的慈悲心和善巧,也许它可以做一个更好的向导,井蛙也不至于吓死,也许它还会移居到海边也说不定。而我们也不需要有超自然的天赋才能了解空性。这和教育以及愿意观察事物所有的部分以及隐藏的因缘有关。有了这种洞见,我们就会象布景设计师或摄影助理在看电影。专业者能看见我们所看不见的东西。他们看见摄影机如何布置,以及其他观众们不知道的电影技巧,因此对他们而言,这幻相被拆解了。但专业者在看电影的时候,还是可以尽情享受。这就是悉达多超然的幽默。
悉达多没有一开始就用空性来惊吓大家,反而以一般的方式,诸如禅定以及行为规范--做正确的事、勿盗窃、勿妄言等来教导众多的弟子。根据弟子的本性,他定下了不同程度的出离及苦行,从削发到不食肉等等。对一开始无法听闻或了解空性的人,以及天性适合苦修的人而言,这些状似宗教性的严格道路很有效。
业(Karma)这个字几乎和佛教成了同义字。通常它被理解为一种道德系统的报应—-恶业与善业。然而,业只是一种因果的法则,不应该与道德或伦理混淆。
你也行会认为这是矛盾的。佛陀自我矛盾,说他不存在,一切皆是空性,然后他又教导了道德和救赎。然而这些方法是必要的,以免吓走那些尚未准备好,还不能被引介空性的人。他们用了这些方法,因而变得祥和,易于接受真正的教法,这就如同说那里是有一条蛇。然后把领带丢到窗外一般。这些无限的方法就是道路。然而,道路本身终究也需要被抛弃,如同你抵达彼岸时,就得抛弃舟一般。你抵达时必须要下船。在完全证悟的那一刻,你必须抛弃佛教。精神之路是一个暂时解答,它是在空性被了悟之前所使用的安慰剂。
如同在电影院里的孩童,我们被幻相掳获了。从这儿开始,衍生了我们的虚荣、野心和不安全感。我们爱上了自己创造的幻相,发展出对自己的外表、财富和成就过度的骄慢。好比戴了面具,却骄傲地认为面具是真实的你。
了悟空性的悉达多,对菩提树下的忘忧草或宫殿里的丝绸坐垫没有好恶分别。金线织成的坐垫价值较高,完全是由人类的野心和欲望造作而来的。事实上,山中的隐士也许会觉得忘忧草比较柔软而干净,而且最大的好外是坐坏了也不需要担心。你不需要对它喷药,以免猫用爪子去抓它。宫廷生活充满了这类的“珍品”,需要相当多的维修保养。悉达多是属于比较喜欢草垫的人,因此他不需要常常回家去补充什么东西。
我们人类认为心胸宽广是一种美德。要扩展心胸,重要的是不要安于令我们舒适或习惯的东西。如果我们有勇气超越世俗,不被惯常逻辑的界线所限制,就能得到利益。如果我们能超越界线,就能了解空性是如此可笑地单纯。密勒日巴躲进牦牛角不会比某个人戴上手套还令你讶异。我们所要挑战的,是对惯常逻辑、文法、字母、数学公式的执着。如果能记得这些习惯的和合本性,我们就能断除它们。它们不是不能破除的,所需要的只是一个条件完全正确、资讯适时到位的情况,你可能突然发现所有依赖的工具都不是那么坚实,它们有弹性、可弯曲。你的观点会改变。
正见——佛陀的证悟(二)诸漏皆苦(选摘)
悉达多没有继续前行,决定留在当地禅修。他在附近的一棵毕钵罗树下找到一块平坦的石头,铺上吉祥草当坐垫。他静默地立下誓言,此身可烂,我可能化为尘土。但直到找到答案,我绝不起身(我今若不证,无上大菩提,宁可碎此身,终不起此座)。
问一个佛教徒“什么是人生的目的?”是不恰当的。因为这个问题暗喻在某一个地方,也许在一个洞穴之中或者在一人山岭之上,存在着一个究竟的目的。仿佛我们可以透过追随圣者,阅读书籍以及熟悉秘教修行,来解开这个秘密。如果这问题是假设在亿万年以前,有某个人或神设计了一个人生目的图表,那么它就是一个有神论的观点。佛教徒不相信有个全能的创造者,而且他们不信为生命的目的已经、或需被决定和定义。
即使在个人身上,痛苦和快乐的定义也时有变动。一个轻佻的调情时刻,可能因为其中一个人想要更认真的关系而突然变调,期待转为恐惧。当你是个小孩的时候,在沙滩上堆筑沙堡就是快乐。在青少年时期,看着穿比基尼的女孩,和赤裸上身的男孩冲浪是快乐。在中年,金钱和事业是快乐。当你八十多岁的时候,收集陶瓷盐罐是快乐。对许多人而言,不断调适于这些无尽而又经常变化的快乐定义,即是“人生的目的”。
我们人类在追求快乐、止息痛苦上,用尽了无数的方法和工具,远超过任何其它的嗜好和职业。因此我们拥有电梯、笔记型电脑、充电电池、电动洗碗机、自动弹出完美土司的烤面包机、狗粪吸尘器、电动鼻毛修剪器、温热坐垫马桶、奴佛卡因麻醉药( Novocaine)、行动电话、威而刚、整铺地毯子……,然而不可避免的,这些便捷也制造了等量的头痛。
悉达多当时也是在试图根除痛苦。但他不是梦想着诸如展开政治改革、移民到另一个星球或创造世界新经济;他甚至没有想到要创造一个宗教,或发展一套能带来安详与和谐的行为准则。他以开放的心灵来探索痛苦,透过勤奋不懈的沉思,悉达多发现,追本溯源,导致痛苦的是人的情绪。事实上上,情绪即是痛苦。不论如何,直接或间接的,一切情绪都是生于自私,也就是说,它们都与执着于自我有关。更进一步的,他也发现,情绪虽然看似真实,但不是一个人本具存在的一部分。它们不是与生俱来的,也不是某个人或某个神强加在我们身上的诅咒或植入。当某些特定的因与缘聚合在一起的时候,情绪就会生起,例如当你突然认为某个人在批评你、忽视你,或者剥夺你的利益时。然后,相对应的情绪就会接着生起,在接受、陷入这些情绪的当下,我们就失去了觉知和清明。我们“被鼓动”了。因此悉达多发现他的解决方法—-觉知。如果你认真地想要根除痛苦,你必须培养觉知,留心你的情绪,并且学会如何避免被鼓动起来。
如果你像悉达多一样地检视情绪,试图找出它们的起源,你将会发现它们根植于误解,因此根本上是错误的。基本上,所有的情绪都是一种偏见,在每一种情绪之中,都存在有分别心的成分。
看透了宫廷生活的表象,悉达多现在能够看见自己的身体是不具本质的。在他的眼中,火圈和身体具有相同的本性。如果有人相信其中之一真实存在—-不论是短暂的或恒常的——那么他的信念就是根源于误解;如此,便是失去了觉察,也就是佛教徒所说的无明。我们的情绪,就是从这无明所生起。从失去了觉察到情绪生起的过程,可以用四真谛完全解释。我们接下来会谈到。
魔罗想要争取更多追随者,因而聪明地鼓吹自由,但是如果有人真的行使自由,他不一定会喜欢。基本上,我们只想要让自己,而不想让他人拥有自由。难怪,我们真的行使所有的自由,就不会被邀请去参加任何派对了。
悉达多的解答是—-培养对情绪的觉察。如果情绪正在起的时候,你能够有所觉察,即使只是一点点,不能够限制它们的活动;它们变成象有监护人在旁的青少年。有人在监视着,魔罗的力量就会减弱。悉达多没有被毒箭所伤,因为他觉察到这些只不过是幻相。同样的,我们自己强大的情绪,也可以变成象花瓣一般地不具杀伤力。当天女接近悉达多的时候,他清楚地了解,她们如同火圈,只是和合而成的,因此她们失去了诱惑力,无法动他一丝一毫。同样的,只要了解我们所欲求的对象事实上是和合而成的现象,就能破除诱惑的魔咒。
当你开始注意到情绪所能够造成的损害,觉知就会开始发展。当你有了觉知—-举例来说,如果你知道自己正站在悬崖上行走不再那么恐怖,事实上,它反而是非常刺激的。不知才是恐惧的真正根源。觉知不会妨碍你的生活,反而让生命更加充实。如果你在享用一杯茶,而且了解短暂事物的甘与苦,你将能够真正的享受那杯茶。
EBS性能优化
EBS性能优化Agenda
磁盘调优方法论
常用的磁盘调优方法
磁盘压测工具
磁盘性能检测工具
目前比较常用的是 GP3。
方法论应用程序 –》 操作系统 –》 虚拟机 –》 EBS 服务器
应用程序IO请求下发的路径。
三个方向, iops, 带宽, 延迟,按照这三个方面来观察这个EBS本身的性能。
使用新版本的内核:
3.8 以上内核使用的Indirect descriptors
突破 I/O size 44kiB限制, 可以一次请求下发 128KiB的IO大小。
建议使用 amazonlinux 2023 (悲
uname -r 查看内核的版本。
使用 Raid0使用 Raid0 可以提高带宽, 并且节省成本。
能更换磁盘类型达到性能, 可以使用Raid0
不建议在EBS 做 Raid1 5 6 三种, 校验的方式会降低性能。
推荐使用 mdadm , 不一定要用LVM。
关注队列长度SSD: 每 1000iops 队列长度是 1 , SSD是合适的吧
观察队列长度, 如果能达到 IOPS 的情况下, 队列越低越好。
HDD: 1MiB的IOsize , 建议的队列长度 4
降低io队列的方法,取决于发送IO的速度和线程数量。 或者提高磁盘的IOPS
HDD吞吐量设计增加预读取大小For st1/sc1.
blockdev --report /dev/nvme1n1 # 查看块设备的参数
blockdev --setra 2048 /dev/nvme1n1 # 设置块设备预读取数据量的大小
blockdev --getra /dev/nvme1n1 # 查看参数是否生效。
这个部分是为了增加吞吐量而在Read的同时将后面的一部分数据读取进入内存, 这样可以提高顺序读取的效率, 提高读取的效率, 让顺序读取的业务数据提前进入内存。
使用 Nitro 架构实例
之前使用zen的时候有一个Dom0来进行实例的管理。 nitro 做成 Hardware, nitro 管理VPC等等等, 尽可能把 X86 过度给客户来使用。
Refer to: https://zhuanlan.zhihu.com/p/270522703
开启EBS优化选项。 非优化的场景下,会与网络请求共享带宽, EBS优化这个功能单独隔离了EBS的网络请求。
使用正确的实例类型关注实例的限制, 例如实例的上限是 14000 , 那么实例使用EBS的瓶颈不在磁盘本身, 在实例的性能上限。
压测工具
dd
hdparm
sysbench
iometer
iozone
推荐fio
https://fio.readthedocs.io/en/latest/fio_doc.html
ebs设置默认的 Block Size是 16k , 其他厂商可能是 4k的。 这个部分可能会在测试的时候造成差异。
测试命令#!/bin/bash
# 这个命令的运行结果是, 一个 job 在 iodepth 为 1 的时候, 写入与底层一样的块大小,在iostat 中可以看到 avgqu-zs 的大小是 1。
# 添加一个process之后, 队列的size 变成了2 ; 添加一个 iodepth 之后, 队列的大小为 1 ~ 2 之间。
# 大佬认为内核的蓄流将请求合并了, 所以没有造成对应的压力。
fio --directory=/mnt --name fio_test_file --ioengine=libaio --direct=1 --rw=read --rate_iops=1 --bs=16k --size=200M --iodepth=1 --numjobs=1 --time_based --runtime=600 --group_reporting --norandommap
perf record -g result (libaio):
fio 319375 86964.196578: 250000 cpu-clock:pppH:
ffffffff88355470 put_dec+0x0 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff8835584b number+0x33b (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff8835ac9d vsnprintf+0x44d (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff8835afe2 sprintf+0x62 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87efc94c dev_show+0x2c (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87efbc6c dev_attr_show+0x1c (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87abac9b sysfs_kf_seq_show+0xab (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2a7a3 seq_read_iter+0x123 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f4c06 vfs_read+0x1f6 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f59ff ksys_read+0x6f (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff88364360 do_syscall_64+0x60 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff884000f3 entry_SYSCALL_64+0xb3 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
103fdc read+0x4c (/usr/lib/libc.so.6)
0 [unknown] ([unknown])
perf record -g result (psync):
fio 324148 87167.271746: 250000 cpu-clock:pppH:
ffffffff8835480c strlen+0xc (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2990b seq_puts+0x1b (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87aa94ee render_sigset_t+0x1e (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87aa9c96 proc_pid_status+0x716 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87aa1e34 proc_single_show+0x54 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2a7a3 seq_read_iter+0x123 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2abe4 seq_read+0xd4 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f4abc vfs_read+0xac (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f59ff ksys_read+0x6f (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff88364360 do_syscall_64+0x60 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff884000f3 entry_SYSCALL_64+0xb3 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
103fa1 read+0x11 (/usr/lib/libc.so.6)
0 [unknown] ([unknown])
观测[[Linux_iostat|Linux_iostat]]可以直接使用这个命令来观察磁盘的使用情况, 磁盘的使用率其实并不太准确,这个表示单位时间内cpu时间被io请求占用的时间。
个别的 10ms 之上的IO请求的长尾现象是正常的, 这个无法避免。
关于长尾现象的说明:
长尾请求一般是指明显高于均值的那部分占比较小的请求。 业界关于延迟有一个常用的P99标准, 也就是99%的请求延迟要满足在一定耗时以内, 1%的请求会大于这个耗时, 而这1%就可以认为是长尾请求。
Refer to: https://zhuanlan.zhihu.com/p/35516682
X11 通过 ssh 转发图形化界面
Ssh 转发 X11sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock
vim /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost no
运行图形化的命令 , 自动捕获请求, 查看mobexterm是否已经正常的启动了一个临时的窗口来进行数据的转发即可 。
Ssh 转发连接到远端ssh -L local-port:target-host:target-port tunnel-host
ssh -vvv -f -N -D 0.0.0.0:30890 hayden@localhost
Ssh 转发命令参数说明-L listen-port:host:port 指派本地的 port 到达端机器地址上的 port
建立本地SSH隧道(本地客户端建立监听端口)
将本地机(客户机)的某个端口转发到远端指定机器的指定端口.
-R listen-port:host:port 指派远程上的 port 到本地地址上的 port
建立远程SSH隧道(隧道服务端建立监听端口)
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.
-D port 指定一个本地机器 "动态的" 应用程序端口转发.
rime的配置
https://github.com/iDvel/rime-ice
https://rime.im/
小狼毫输入法, 或者Fcitx5 挂载 rime 即可。
后面如果还有输入法相关的内容会放在这个里面。
小鹤双拼> cat ./default.custom.yaml
patch:
schema_list:
- schema: double_pinyin_flypy # 小鹤双拼
ascii_composer:
good_old_caps_lock: true # true | false
switch_key:
Caps_Lock: clear # commit_code | commit_text | clear
Shift_L: noop # commit_code | commit_text | inline_ascii | clear | noop
Shift_R: noop # commit_code | commit_text | inline_ascii | clear | noop
Control_L: noop # commit_code | commit_text | inline_ascii | clear | noop
Control_R: noop # commit_code | commit_text | inline_ascii | clear | noop
输入法默认不切换全半角> cat ./default.custom.yaml
patch:
switches:
- name: ascii_mode
states: [ 中 ]
reset: 0
- name: ascii_punct # 中英标点
states: [ ¥, $ ]
reset: 0
- name: traditionalization
states: [ 简, 繁 ]
reset: 1
- name: emoji
states: [ 💀, 😄 ]
reset: 1
- name: full_shape
states: [ 半角, 全角 ]
reset: 0
serviceAccount 获取 Token 以及权限的方式
手动获取Token 并发送请求给容器接口。
/var/run/secrets/kubernetes.io/serviceaccount $ pwd
/var/run/secrets/kubernetes.io/serviceaccount $ cat ./token
eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3N2JhOGMwY2FjYWEwNDk0MWU4MWM0ODk1Y2JiZjBiOTU2NTA1OTYifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTcyMTk3ODkxOCwiaWF0IjoxNjkwNDQyOTE4LCJpc3MiOiJodHRwczovL29pZGMuZWtzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbi9pZC9DMEE5NzJGNERCMThBOTMxN0RBMzk0Q0MwRDMzMjU3RiIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoibW9uaXRvcmluZyIsInBvZCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMtMCIsInVpZCI6ImE4YzdkMGY2LWUyMmEtNGY2Ny04NzYzLWNiNGQwYzM5MWFlMCJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMiLCJ1aWQiOiJmN2M3YWMzZC1iZmY4LTRmODctYTlkNy04MjJjYWM4ZDVjMjkifSwid2FybmFmdGVyIjoxNjkwNDQ2NTI1fSwibmJmIjoxNjkwNDQyOTE4LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bW9uaXRvcmluZzpwcm9tZXRoZXVzLWs4cyJ9.D3a7b93ZnBrmM-hjFrklce8upr8gUhUYYwmjGzZKOKb4EWUCoQXY1p197UoViUmYzbiOhchbehKosFcOjiL2GVGXqDRIXPmFU9p8l80Z9fuilB2TmexB6uBavuEF6blKHkH0VjyVQ3Kg39WzjD0Atrw-G6N4QZ_m0TOcKFfqRPebbH-Q-vzz5UuNPUYRKF4XZIT84QqYLYiBOkkeFIS_abo18YddMbn2AZQcbWamxQV2XPXjNKKwHeQvP1Xdr4hZLt0oGudE2XZtQp60ZCrfDmQteh-KhMWRvsZpoNvE4n8HieAhTTrFq_TjjX9IHlXrPmcONAkQ33jVgRIaw_r_0g
export TOKEN="Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3N2JhOGMwY2FjYWEwNDk0MWU4MWM0ODk1Y2JiZjBiOTU2NTA1OTYifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTcyMTk3ODkxOCwiaWF0IjoxNjkwNDQyOTE4LCJpc3MiOiJodHRwczovL29pZGMuZWtzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbi9pZC9DMEE5NzJGNERCMThBOTMxN0RBMzk0Q0MwRDMzMjU3RiIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoibW9uaXRvcmluZyIsInBvZCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMtMCIsInVpZCI6ImE4YzdkMGY2LWUyMmEtNGY2Ny04NzYzLWNiNGQwYzM5MWFlMCJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMiLCJ1aWQiOiJmN2M3YWMzZC1iZmY4LTRmODctYTlkNy04MjJjYWM4ZDVjMjkifSwid2FybmFmdGVyIjoxNjkwNDQ2NTI1fSwibmJmIjoxNjkwNDQyOTE4LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bW9uaXRvcmluZzpwcm9tZXRoZXVzLWs4cyJ9.D3a7b93ZnBrmM-hjFrklce8upr8gUhUYYwmjGzZKOKb4EWUCoQXY1p197UoViUmYzbiOhchbehKosFcOjiL2GVGXqDRIXPmFU9p8l80Z9fuilB2TmexB6uBavuEF6blKHkH0VjyVQ3Kg39WzjD0Atrw-G6N4QZ_m0TOcKFfqRPebbH-Q-vzz5UuNPUYRKF4XZIT84QqYLYiBOkkeFIS_abo18YddMbn2AZQcbWamxQV2XPXjNKKwHeQvP1Xdr4hZLt0oGudE2XZtQp60ZCrfDmQteh-KhMWRvsZpoNvE4n8HieAhTTrFq_TjjX9IHlXrPmcONAkQ33jVgRIaw_r_0g"
curl -k -H "$TOKEN" https://127.0.0.1:10250/metrics