Posts
469
Following
90
Followers
94
n00b Kernel Hacker
- Intern @ NVIDIA Korea (Security System Software) (2024.06 ~)
- Ex-Intern @ Panmneisa (CXL emulation stuff) (~2023.12)
- Undergraduate majoring CSE (estimated graduation: Feb. 2025)
- Working as reviewer at Linux Slab subsystem
- Born in August 6, 2000

Opinions are my own.

My interests are:
Memory Management,
Computer Architecture,
Circuit Design,
Virtualization
Edited 1 year ago
Remotely draining remote PCPs was previously impossible because the only synchronization method was to disable interrupts on !PREEMPT_RT kernels. That's why the patch series changed locking from local_lock to spinlock.

One might wonder the change causes performance regressions due to spinlock overhead but the data shows only minor page fault rate reduction.

Interestingly @vbabka seems to be introducing similar mechanism on the new per-cpu opt-in array in SLUB allocator. BTW SLUB does not support draining other CPUs' per-cpu partial list anyway, I wonder if he would try it as well? (ofc I guess not atm)
1
0
1
Edited 1 year ago
TIL1 - There are three types of scheduling tick reduction mechanism (NO_HZ_FULL, NO_HZ_IDLE, HZ_PERIODIC).

NO_HZ_IDLE reduces scheduling ticks only when a CPU is idle (for energy efficiency). This is the default.

NO_HZ_FULL reduces scheduling ticks when there is only one runnable task per CPU. (used on HPC workloads or realtime applications)

HZ_PERIODIC never reduces scheduling ticks.

TIL2 - The mechnism of the Linux buddy allocator's PCP (per cpu pages) draining was recently changed from interprocessor interrupts, to workqueue, and then remote draining from the CPU that invokes draining. I knew that this exists - but took a closer look during this week's my local kernel study session.

The latest change is quite useful because it does not need to wait for other CPUs to drain their PCP locally, and nohz full CPUs does not need to stop what they were doing and drain their local PCPs.
1
1
2
Edited 1 year ago
TIL:
While modern programming languages are specified in context-free or context-sensitive grammars, regular languages are still used for tokenizing the source code because regular language is limited but powerful.

The lexical specification of a typical programming language is written in regular language.

The computational unit that understands regular languages are finite automata. To implement an automaton, a nondeterministic automata that processes a regular expression is created first, and then it is converted to deterministic finite automata for fast processing.
0
0
0
@ljs Hope you get well soon!
Hmm, I should reflect on myself – I sometimes skip the gym for no reason.....
1
0
1
@vbabka
haven't watched it yet, but I knew it! the poster was epic as well.
0
0
1
Edited 1 year ago
@vbabka yeah it can't be broken if it's deleted :D
waiting for some time (?) to pass after the deprecation lands on LTS?
1
0
1
Edited 1 year ago
For quite some time now, I've had two concerns on my career:

The first one is to find a position that allows me to work on (public or internal) kernel stuff, and possibly contribute to the upstream kernel. This is important because I want to work on what I want to.

The other one is to find a position that allows me to observe functional/performance issues on production workloads, fix them and do performance engineering. This is important too because a huge gain on a workload that does not occur in the real world is useless.

I'm not sure if such positions are common and not even sure if they are compatible :/
0
0
0
Edited 1 year ago
Lessons learned today:

- Your theoretical expectation on something is very prone to error and do not believe it even when you are very sure. Prove it by data.

- Do not measure the outcome of multiple changes at once.

- Do not create an account with a very simple password on a publicly available computer, someone will log into it and eat your CPUs.
1
0
1
@vbabka OPPENHEIMER!
Enjoying your off?
1
0
0
Me with my friends
0
0
1
@vbabka Oh, @lkundrak's job was to fix a broken filesystem?
0
0
1
Edited 1 year ago
When there are no free pages in free list of the requested order, buddy allocator splits a larger page into smaller ones, and allocates a one of the split pages.

TIL: The way buddy splits large pages (and allocating first or last part of a large page) during the expand() function significantly impacts the mergability of the scatter-gather list for IO. The likeliness that pages are allocated in PFN order is important for mergability. This is so subtle and I didn't realize this :(

Consider a scenario where there is only an order 2 block, and four order 0 requests are served. In the diagram above, they are allocated in PFN order, while in the other diagram, they are allocated in the reverse order.

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/?id=c75b81a5da09be94099cf7b46bdb32fedc8ce71a

And in the history this thing has introduced a regression because the order was not preserved (by mistake) when pages are allocated from PCP lists with __GFP_COLD ;)

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e084b2d95e48b31aa45f9c49ffc6cdae8bdb21d4
0
0
1
@vbabka @AnnaPlusPlus
Sent risky patches that maintainers would not welcome
.....guess I'd better send more
1
0
2
Edited 1 year ago
DAMON user-space tool (damo) has released[1] its 100th version. A mail[2] for the news, release stats, and appreciation to the DAMON community has also posted. From the mail:

"Looking forward to 200th, and 1,000th release of damo :D We, the community,
will make it together."

[1] https://github.com/awslabs/damo/releases/tag/v1.9.3
[2] https://lore.kernel.org/damon/20230807202044.98700-1-sj@kernel.org/

#linux #kernel #damon #damo
0
2
3
@ljs I survived :)
1
0
2
Edited 1 year ago
@ljs I'm not sure if it's powerful enough to destroy my house. wish me luck please
1
0
1
@ljs thanks mate. I'm going to stay at home for the whole day :)
1
0
2
something big is coming
1
0
1
Edited 1 year ago
damn it's too hot
0
0
1
Show older