Baseline: Faasm

Faasm 是来自 Imperial College London 的 Simon Shillaker 和 Peter Pietzuch 与 ATC'20上提出的工作。

Faasm 通过 WebAssembly 提供的软件故障隔离来隔离执行函数的内存,同时允许在同一地址空间内的函数之间共享内存区域以避免高昂的数据移动成本。其提供了 Faaslets 运行时,使用标准 Linux cgroups 来隔离 CPU 和网络等资源,并提供低级 POSIX 主机接口以便进行网络、文件系统访问和动态加载,并通过快照技术减少恢复 Faaslets 初始化时间。

本文主要介绍如何部署 Faasm 并在上面开发 Benchmark 应用。

Wastime: `#[!no_std]` Support

在 v21.0.0 的 Release 版本中,wasmtime 包允许在 #![no_std] 的平台构建,但是只支持编译过程中的 Cargo 特性,目前支持的 Cargo 特性有:runtime, gc, component-model

官方提供了 Example 来表明如何构建这样的 wasmtime

GDB Notebook

利用 GDB 可以做四种主要的事情来帮助调试:

  • 启动程序,指定参数
  • 使程序在指定条件下停止
  • 检查程序停止时发生了什么
  • 更改程序中的内容

截至目前,GDB 15.1 支持的语言包括 Ada, Assembly, C, C++, D, Fortran, Go, Objective-C, OpenCL, Modula-2, Pascal ,Rust.

下面将介绍 GDB 调试的主要用法。

Hugo:配置Callouts

Callouts 是 Obsidian 中增强显示的工具,丰富了原始 Markdown 中具备的标签。

本文主要介绍如何将 Callouts 移植到 Hugo 中,使得本地 Obsidian 预览结果和 Hugo 渲染出来的 Callouts Block 具备一致的效果.

Todo

  • 增加可折叠
  • 修复嵌套时样式被覆盖
Nginx:使用 RTMP 模块进行直播

HLS 是最常见的视频流媒体协议,HLS 是一种自适应流媒体技术,可以根据用户的设备和网络条件对播放媒体内容,以获得最佳播放性能。

借助 Nginx RTMP 模块,为服务器添加 RTMP 和 HLS流 直播功能。

Hugo & Obsidian 联动

使用最好的笔记管理软件 Obsidian 进行笔记整理和论文阅读记录,使用 Hugo 将这些内容进行渲染,使用 Git 作为多机器版本控制工具,最终发布到自己的网站,便于查看。

本文将介绍其中的配置和整体联动的思路。

CodeCrunch: Improving Serverless Performance via Function Compression and Cost-Aware Warmup Location Optimization

该论文是来自Northeastern University的Rohan Basu Roy的工作,发表于ASPLOS ‘24上。

Abstract:Serverless computing has a critical problem of function cold starts. To minimize cold starts, state-of-the-art techniques predict function invocation times to warm them up. Warmedup functions occupy space in memory and incur a keep-alive cost, which can become exceedingly prohibitive under bursty load. To address this issue, we design CodeCrunch, which introduces the concept of serverless function compression and exploits server heterogeneity to make serverless computing more efficient, especially under high memory pressure.

Entry:Zotero link URL link

Containers in HPC: A survey

本文是 Rafael Keller Tesser 发表在 The Journal of Supercomputing 2023 上的综述。

Abstract: OS-level virtualization (containers) has become a popular alternative to hypervisor-based virtualization. From a system-administration point-of-view, containers enable support for user-defined software stacks, thus freeing users of restrictions imposed by the host’s pre-configured software environment. In high performance computing (HPC), containers inspire special interest due to their potentially low overheads on performance. Moreover, they also bring benefits in portability and scientific reproducibility. Despite the potential advantages, the adoption of containers in HPC has been relatively slow, mainly due to specific requirements of the field. These requirements gave rise to various HPC-focused container implementations. Besides unprivileged container execution, they offer different degrees of automation of system-specific optimizations, which are necessary for optimal performance. When we looked into the scientific literature on containers applied to HPC, we were unable to find an up-to-date overview of the state-of-the-art. For this reason, we developed this extensive survey, including 93 carefully selected works. Overall, based on our survey, we argue that issues related to performance overhead are mostly solved. There is, however, a clear trade-off between performance and portability, since optimal performance often depends on host-specific optimizations. A few works propose solutions to mitigate this issue, but there is still room for improvement. Besides, we found surprisingly few works that deal with portability between dedicated HPC systems and public cloud platforms.

Entry:Zotero link URL link

Nginx:配置put和delete方法转发

由于历史原因,最原始的 http 里面 put 允许不经过验证机制匿名上传文件,造成了大规模的恶意攻击事件,因此很多 old-fashioned 扫描人员会直接报告说支持 put, delete, options 就是不安全。

因此要么强制 https,防火墙和扫描就无法知道请求的 method 具体是什么;要么在 nginx 中配置put和delete方法的转发。

Git Notebook

Git Bash

对于Windows系统,需要将 Git bash 加入Terminal,方便Hugo等等的使用。

其路径在 C:\\Program Files\\Git\\bin\\bash.exe ,直接在Terminal的配置界面加入即可。