MIPS - A Deep Dive(一)
MIPS Q&A
About MIPS32.
Page Fault
What is a page fault ?
A page fault is an exception that MMU raises when a process accesses a memory page without proper preparations.
Accessing the page requires:
A mapping be added to the process’s virtual address space.
The actual page contents be loaded from a back-up, e.g. a disk.
The page fault is detected by the memory management unit (MMU), and the exception is handled by the OS kernel by making the required page accessible in the physical memory ...
论文复现 - Memtis(一)
环境准备
Memtis - ASPLOS’23
前置 | 基本概念
Setting tiered memory systems with Intel DCPMM
打算使用 Optane 内存模式以在物理机器上运行实验。
1sudo ndctl create-namespace -f -e namespace0.0 --mode=devdax
Reconfigures a namespace with devdax mode:
-f: Allow the operation to continue on enabled namespaces
-e: Reconfigure existing namespace configuration
--mode: Define the namespace mode - fsdax, devdax, sector, and raw
Reconfigures a dax device with system-ram mode (KMEM DAX).
1sudo daxctl reconfigure-device dax0.0 --mode ...
论文复现 - Memtis(二)
实验复现
Memtis - ASPLOS’23
前置 | Linux
cgroup [1] [2] [3]
kthread [4]
taskset
Benchmarks 验证运行
依照原文实验,配置了除 SPEC CPU 2017 以外的所有测试集。
gapbs
对 benchmark/bench.mk 做少许修改,手动下载解压。[5]
liblinear
v2.45 没有了,现版本 v2.47。对 datasets.mk 做少许修改,kdd 需要手动下载。[6]
graph500
v3.0.0 和 vmitosis-workloads/graph500 均无法使用,单独安装 v2.1.4.[7]
Benchmark Specification - Graph 500
btree
123# change the number of elements and lookup requestsvim btree/btree.c# see line 61
XSBench
Programming Model: openmp-threading
This is the ...
PMDK Getting Started
Persistent Memory Documentation
Getting Started Guide
PMDK Introduction
Tuned and validated on both Linux and Windows, the libraries build on the Direct Access (DAX) feature which allows applications to directly access persistent memory as memory-mapped files[1].
*Raw Device Access: 裸设备访问
**注意这里 PMDK 没有经过 NVDIMM Driver
The ‘Persistent Memory’ area describes the fastest possible access (? why faster than with a cache) because the application I/O bypasses existing filesystem page caches and go ...
SetupTools(一)
Setuptools
基于一个简单项目对 Setuptools 进行讲解。最后,项目还使用 Electron-Builder 将 Web 应用封装为桌面应用。
项目结构
123456789101112131415161718192021cli/- .streamlit/ - config.toml- hooks/ - hook_streamlit.py- pages/ - 1_PageOne.py - 2_PageTwo.py- Index.py- run_index.py- run_index.specpack/- main.js- main.bat- package.json- package-lock.json- resources/ - run_index.exe- static/ - icon/
RuskDesk 配置记录
RustDesk
现在 RayLink 时好时坏,苦于没有能用的远程软件,遂尝试 RustDesk 自建中继服务器。
安装及配置
教程移步 ☞
Server
首先在服务器面板和 ufw 分别放行端口。可能是以前装 Hexon 时装了 pm2,所以直接采用 pm2 部署。从 .pub 文件获取 Key,本地需要填写。
Client
填写云服务器 IP 和 Key[1],没改默认端口,至此已经可以运行。
体验
释怀地似了,比 RustDesk 更卡。给服务器测个速看看。
speedtest
librespeed/speedtest | Tutor | Repo
顺手修了下宝塔,查看配置使用 bt 14,原来端口后面还有一小串路由,加上才能访问。添加网站后测速如下。
下行是正常的,只能是封端口或者流量特征检测之类。
修复
恼火。突然发现 PicUploader 一直 401,首先怀疑是在宝塔弄测速时把 Nginx 碰坏了,检查了一个多小时,一无所获。把测速网站整个删光并重启 Nginx,清除浏览器数据。无效。
换用 Edge 和 Chrome (无痕),均正常。怀疑又 ...
SSL 证书自动更新及部署
SSL 证书自动化更新 / 部署
Backgrounds
OHTTPS Dachboard | OHTTPS 文档
腾讯云附赠的一年 SSL 证书到期了,再续便是 90 天有效期,十分麻烦。偶然得知 OHTTPS 服务可支持主流云服务商及多种平台 SSL 免费证书的自动化申请 / 更新及部署,一探究竟,记之此文。
笔者去年主要给四个三级域名申请了证书 ( 因为腾讯云不给泛解析证书 ),其中三个位于自己的轻量服务器,一个绑定七牛云 CDN.
Solutions
注册账号后申请了 Let’s Encrypt 的泛解析证书,向 DNS 解析添加一条 CNAME 便完成。
参考 OHTTPS 教程 进行自动化证书更新 / 部署,更新周期设为最长 75 天。七牛云节点容易配置,服务器节点则稍费工夫,通过创建 SSH 节点完成。
SSH 节点部署
前置
建议创建专门用于证书部署的用户。
1234# 新建cert用户useradd -m cert# 设置cert用户登录密码passwd cert
权限控制
1sudo sudoer
进入 NANO 后在文件末尾添加
1cert AL ...
StackEdit 美化
StackEdit 美化
终于完成了一直惦记的美化。虽有瑕疵,仍完成了目标。
Overview
先上图。
美化
Stylish 存在隐私问题,平替 Stylus (forked from Stylish). 对前缀 https://stackedit_io 应用如下样式[1]。
123456789101112131415161718192021222324a { text-decoration: none;}code { font-family: "JetBrainsMono Nerd Font","Roboto Mono","Lucida Sans Typewriter","Lucida Console","monaco","Courrier,monospace","楷体" !important;}code * { font-family: "JetBrai ...
Streamlit 入门
Streamlit 可视化
API 整理
文件上传
st.file_uploader
区别于文件接口,该 API 返回的是字节字符串,即 b'???' 形式。这导致无法直接处理。
解决方案是在 Parser 类中加一层转换,同时进行乱码处理
1file = io.TextIOWrapper(raw_file, encoding='utf-8', errors='ignore')
此时就可以使用 file.readlines() 等常用 API 进行处理了。
按钮
st.button(name)
点击事件可通过 if 触发
12if st.button(): ...
复选框
st.checkbox
下拉框
st.selectbox
下拉框 (多选)
st.multiselect
e.g. 将表格首列条目作为备选列表
12df = pandas.read_excel()channels = st.multiselect(MSG, df[df.columns[0]].tolist(), ["first_elem"])
...
Typora 美化
Typora 配置
修改 ~/AppData/Roaming/Typora/themes/github.css
12345678910111213141516171819202122232425262728293031/* 在 themes/ 下放置图片目录 */:root { --side-bar-bg-color: #fafafa; --control-text-color: #777;+ background-image: url(./image/backgrounds/your_bg.jpg);+ background-size: cover;+ opacity: 0.81;}/* 所有 font-family 中添加 'Times New Roman','宋体' */html {- font-size: 14px;+ font-size: 18px;}a { color: #4183C4;+ text-decoration: none;}h1, ...