cd2064a1322/p12_1.jpg)
2.7 (Old) Startup
CPU Usage

2.8 (New) Startup
CPU Usage
## Startup Breakdown
Enumerate asset 60110a4e5decd2064a1322/p17_1.jpg)
## High
CPU Time
Single threaded code
Inefficient algorithms
Branch misprediction, cache misses
Spin locks
## High
CPU Time
Single threaded code
Inefficient algorithms rouping:
Function / Call Stack | | Function / Call Stack | CPU Time | Wait Time by Utilization ▼ | Wait Count | Module | | | 0 码力 |
76 页 |
2.22 MB
| 1 年前 3
technical details and surprising conclusions that virtual functions can be actually faster. Since CPU architectures are mentioned, I'd expect to see deep assembly profiling.
## Ok, some assembly is But I have another computer
## Different CPUs
## Laptop:
Model name: Intel(R) Core(TM) i5-10310U CPU @ 1.70GHz
Thread(s) per core: 2
Core(s) per socket: 4
Stepping: 12
## Desktop:
Thread(s) per core: /9/2/1092c89fc888067fdbc59ca7369237f9/p14_1.jpg)
## Conclusions
## Relevant factors
• CPU manufacturer
• CPU version
• Precise code path
• Temperature(?)
• OS interrupts(?)
- Compiler optimization
0 码力 |
20 页 |
1.19 MB
| 1 年前 3
TVM@AliOS
## PRESENTATION AGENDA
☑ TVM @ AliOS Overview
TVM @ AliOS ARM CPU
TVM @ AliOS Hexagon DSP
TVM @ AliOS Intel GPU
☑ Misc
## PART ONE TVM @ AliOS Overview
## AliOS Overview
• AliOS (www.alios 驱动万物智能
## PART TWO AliOS TVM @ ARM CPU
## AliOS TVM@ARM CPU
• Support TFLite (Open Source and Upstream Master)
• Optimize on INT8 & FP32
## AliOS TVM @ ARM CPU INT8
Convolution
• NHWC layout
• AliOS TVM @ ARM CPU INT8
TVM / QNNPACK Speed Up @ Mobilenet V2 @ rasp 3b+ AARCH64

## AliOS TVM @ ARM CPU INT8
Depthwise
0 码力 |
27 页 |
4.86 MB
| 1 年前 3
经过这么多年大流量服务端架构设计的沉淀,go-zero 在保护服务的稳定性上下足了功夫,不管是 CPU 密集型还是 IO 密集型服务,go-zero 都能很好的保护服务在如下场景不被拖垮或卡死:
远超服务容量的突发大流量
CPU 打满
• 上下游故障或者超时
• MySQL、MongoDB、Redis 等中间件故障或者超负载(典型的是 CPU 飙高)

那我们想想,如果我们的服务 CPU 被打满了,是不是后面所有的请求也都被卡住了?等服务处理 不懂的话,可以来 go-zero 群里讨论讨论。。。
### 2.1 模拟 CPU 密集型服务
有人可能会问 CPU 密集型服务怎么定义?你的服务 CPU 会打满吗?处理请求会包含复杂的计算逻辑吗?你经常需要通过 cpu profiling 来优化性能吗?可以理解为服务的 IO 比较快,或者比较少,瓶颈是在 CPU 消耗上。
你可以直接用 goctl quickstart -t mono 命令生成一个
0 码力 |
13 页 |
1.68 MB
| 2 年前 3
benchmark::DoNotOptimize(a);
}
测试结果(均为 gcc-03)
|Benchmark|Time|CPU|Iterations|
|---|---|---|---|
|testSorted<upperTernary>|547329 ns|546965 ns|1279|
|testSorte 排序为什么对有分支的版本影响那么大
## 为什么需要流水线
- 为了高效,CPU 的内部其实是一个流水线 (pipeline)。流水线的目的是能把原本串行的一系列指令并行化。为了理解为什么需要流水线,我们先反过来,假设没有流水线,会有什么坏处。
例如,右边你今天早上的任务清单。
• 请问你这些任务总共需要多少时间?
|任务|时间|占用资源|
|---|---|---|
|洗脸|5 分钟|眼睛,嘴巴,手| 分钟嘛!可以,不过这是在你每次只做一件事的情况下,例如你烧开水时就站在旁边干瞪眼,什么也不做,其实完全可以在烧开水的同时洗脸刷牙呀!原始的 CPU 也是这样,ALU 在运算的时候指令解码单元就在旁边干瞪眼,要等 ALU 跑完写回寄存器来指令解码单元才开始继续工作,很低效。
|任务|时间|占用资源|
|---|---|---|
|洗脸|5 分钟|眼睛,嘴巴,手|
|烧开水|10 分钟|煤气灶|
|刷牙|5 分钟|嘴巴,手|
0 码力 |
47 页 |
8.45 MB
| 2 年前 3
从数据结构与算法的角度看,这种方法本质上是“贪心”算法。
小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题转移到计算机上,以更高效的方式解决各种复杂问题。
如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你迈入数据结构与算法的知识殿堂。 · 空间占用尽量少,以节省计算机内存。
· 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。
· 提供简洁的数据表示和逻辑信息,以便算法高效运行。
数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两个例子。
· 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。
图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。
也就是说,在能够解决问题的前提下,算法效率已成为衡量算法优劣的主要评价指标,它包括以下两个维度。
· 时间效率:算法运行时间的长短。
· 空间效率:算法占用内存空间的大小。
简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。
效率评估方法主要分为两种:实际测试、理论估算。
0 码力 |
392 页 |
18.52 MB
| 1 年前 3