@linux_kal наш чат
По всем вопросам- @workakkk
@ai_machinelearning_big_data - машинное обучение
@itchannels_telegram - 🔥 главные ресурсы для хакера
@programming_books_it - бесплатные it книги
@pythonl -🐍
РКН: clck.ru/3Fmszy
#VRHSZ
Post #2194
7K

⚡️ Linux умеет передавать страницы памяти ядру почти без копирования
Есть малоизвестный системный вызов
Он позволяет отобразить пользовательские страницы памяти прямо в pipe:
Самая интересная часть —
Этим флагом userspace фактически говорит ядру: эти страницы памяти можно считать переданными тебе.
Это используется в zero-copy/low-copy сценариях, где хочется минимизировать лишние копирования между userspace и kernel space.
Но есть нюанс: после такой передачи нельзя относиться к этим страницам как к обычной памяти и спокойно менять их содержимое.
Очень низкоуровневая штука, но отличный пример того, насколько далеко Linux позволяет зайти в оптимизации I/O.
Есть малоизвестный системный вызов
vmsplice().Он позволяет отобразить пользовательские страницы памяти прямо в pipe:
struct iovec iov = {
.iov_base = buf,
.iov_len = len
};
vmsplice(pipefd[1], &iov, 1, SPLICE_F_GIFT);
Самая интересная часть —
SPLICE_F_GIFT.Этим флагом userspace фактически говорит ядру: эти страницы памяти можно считать переданными тебе.
Это используется в zero-copy/low-copy сценариях, где хочется минимизировать лишние копирования между userspace и kernel space.
Но есть нюанс: после такой передачи нельзя относиться к этим страницам как к обычной памяти и спокойно менять их содержимое.
Очень низкоуровневая штука, но отличный пример того, насколько далеко Linux позволяет зайти в оптимизации I/O.
- 🔥 16
- 😁 5
- ❤ 3
- 🥰 1

















