eBPF hello-world

eBPF的入门例子,python + c代码,原理:辅助函数、验证器、虚拟机,编译器,映射,各种bpf指令;bpf系统调用,辅助函数,bpftool工具,bpf映射,类型格式。bpf事件,跟踪类型(进而为监控、排错、性能优化等提供数据支撑),网络类型(网络的观测、过滤、流量控制以及性能优化等),其他类型(如安全控制、BPF 扩展等)
+2

阅读全文

Flink 内存管理

MemorySegment 是Flink的最小内存分配单元、默认 32KB,先放到内存中,也可以序列化,借助KryoSerializer等、内存不够序列化到 磁盘。 HeapMemorySegment 提供了操作堆内存的方法;DataOutputView 扩展了java.io.DataOuput,提供多个写入视图、DataInputView 接口扩展了 java.io.DataInput,提供多个读取视图、MemoryManager主要用于管理排序、哈希和缓存等操作对应的内存空间,且这些操作主要集中在离线计算场景中、NetworkBufferPool通过MemorySegmentFactory申请用于存储NetworkBuffer的MemorySegment内存空间。调用过程:TaskManager –> TaskSlot –> MemorySegment。序列化和反序列化,TypeInformation 分为:BasicTypeInfo、BasicArrayTypeInfo、CompositeType、WritableTypeInfo、GenericTypeInfo
flink_4/4.jpg flink_4/5.jpg flink_4/6.jpg flink_4/7.jpg flink_4/8.jpg flink_4/9.jpg flink_4/10.jpg flink_4/11.jpg+1

阅读全文

Flink RPC

由Akka 构建的 RPC通讯,Dispatcher,JobMaster、ResourceManager等都继承了RpcEndpoint。RpcServer接口通过AkkaInvocationHandler动态代理类实现。TaskManager之间通过Netty 做通讯,RecordWriter先写到本地buffer,在根据选择输出到ResultPartition,最后发送到netty-server,对端的netty-client接收后,转发给 InputGate–>OperatorChain 的 head 算子,再转给StreamTaskInput(同样也有local buffer)。直接从外部源数据读取数据的SourceStreamTask和SourceReaderStreamTask、支持从网络或本地获取数据的OneInputStreamTask和TwoInputStreamTask。ResultPartition:实际上是ExecutionGraph 中 IntermediateResultPartition 对应的底层物理实现,含多个 ResultSubPartiton 实例。PipelinedResultPartition(类似presto)、BoundedBlockingResultPartition(类似spark)、HsResultPartition (Hybrid Shuffle)、SortMergeResultPartition、BufferWritingResultPartition。ConnectorManager 和 NettyConnectionManager。基于信用的反压机制,每个 creadit 表示一个上游的 buffer(默认 32KB)
flink_3/18.jpg flink_3/19.jpg flink_3/20.jpg flink_3/21.jpg flink_3/22.jpg flink_3/23.jpg flink_3/24.jpg flink_3/25.jpg+32

阅读全文

最近文章

分类

归档

标签

RSS