Opened 11 years ago
Closed 9 years ago
#552 closed defect (fixed)
Optimize fibril creation
Reported by: | Martin Decky | Owned by: | Martin Decky |
---|---|---|---|
Priority: | critical | Milestone: | 0.7.0 |
Component: | helenos/kernel/generic | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: |
Description (last modified by )
The creation of new fibrils and allocating stacks for them for every single IPC notification (e.g. interrupt notification) puts a lot of stress on the system. It is observed to even cause PS/2 protocol desynchronization on very slow machines (e.g. QEMU).
There are several ways how this issue can be mitigated. This ticket provides an overview of them:
- Optimizing the new bitmap frame allocator (especially the bitmap search itself, which is currently very suboptimal).
- Optimizing the page mapping manipulation by caching the intermediate levels of the page table.
- Implementing a fibril pool that would avoid the need to create and discard all the precious resources for each single notification.
- Allocate the fibril stacks from a different sequence of pages than the heap to avoid unnecessary heap fragmentation.
Change History (4)
comment:1 by , 11 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 11 years ago
Milestone: | 0.5.1 → 0.5.2 |
---|
comment:3 by , 10 years ago
Description: | modified (diff) |
---|
comment:4 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Fix merged in mainline,2514 by handling the IRQ notifications in the receiving manager fibril. Note that additional improvements are possible by e.g. retaining more of the manager fibrils that block (and get killed afterwards) and creating a manager fibril pool out of them.