Обновить
13

Пользователь

2
Подписчики
Отправить сообщение

Рабов надо покупать, разводить, кормить, одевать, обувать, обучать.

Толи дело крепостные - вроде и на вольном выпасе, а вроде и барину принадлежат

Как он вычистил логи соседнего контейнера и перезапустил его?

больше всего, как всегда, пострадают просты пользователи.

Как говорил Иван Грозный - дайте мне вешать на первые 3 кнопки телевизора и я легализую каннибализм за полгода

Слава ЛММ что не через модель, а то по названию статьи сначала стал прикидывать сколько раз из 10 деплоев в проде будет дропнута база.

Хмм, завод где функции автоматизации должны быть математически непрерывными хотят посадить на функции с вероятностным принятием решений. Оукай.

обычно платы проектируют так что некоторые части можно вообще не распаивать.

Предлагаю заодно провести исследование на тему психического состояния членов жюри до и после отсмотра всех материалов для выставления оценок.

В 2008 - да.

В 2020+ - только HBA, поверх можно намазать что душе угодно

У меня 4шт 3b, 4шт 3lts, 4b - никаких проблем. Debian.

301 больше не работает? поисковики приходят не обязательно с рф.

Ну, там же есть окислительное и восстановительное пламя. И.е. если у вас избыток кислорода - углерод уходит, железо окисляется. Если восстановительное - наоборот.

Upd, дык уже есть npu. Rockchip же.

Ну, вы недооцениваете лень.

Писать на питоне под полноценным линуксом и на arduino c, не говорят уже о стм32 две очень большие разницы.

Да даже под esp32 попрбуйте вёбсервер поднять, там предел - 20 коннектов чтоли ( в том который из библиотеки какой-то стандартной )

Ещё же есть всякие видеокамеры. А если докинут Npu - можно будет крутить всякие opencv.

Чтобы государство за что-то отвечало нужно 2 вещи.

1) оно должно научиться делать что-то кроме запретов

2) должна быть какая-то ответственность

Ну вы на своей рабочей станции можете делать что угодно.
Своп такого размера создаётся по умолчанию при установке debian.
На сервере вы не хотите своп вообще.


Минусующим:

package main

import (
        "bufio"
        "fmt"
        "os"
        "os/exec"
        "strings"
        "sync"
        "time"
)

func main() {
        var wg sync.WaitGroup

        // жрёт память
        wg.Add(1)
        go func() {
                defer wg.Done()
                var memoryHog [][]byte
                chunkSize := 100 * 1024 * 1024 // 100 МБ
                fmt.Println("[MEM-HOG] Начинаю потреблять память...")

                for i := 0; ; i++ {
                chunk := make([]byte, chunkSize)
                for j := range chunk {
                        chunk[j] = 1 // или любое значение — главное, чтобы была запись
                }
                memoryHog = append(memoryHog, chunk)

                fmt.Printf("[MEM-HOG] Заполнено %d МБ\n", (i+1)*100)
                time.Sleep(200 * time.Millisecond)
                }
        }()

        // Основной поток: читаем dmesg в поисках OOM
        fmt.Println("[LOGGER] Запускаю мониторинг dmesg на предмет OOM...")

        // Запускаем `dmesg -w` (требует sudo!)
        cmd := exec.Command("dmesg", "-w")
        stdout, err := cmd.StdoutPipe()
        if err != nil {
                fmt.Fprintf(os.Stderr, "[LOGGER] Ошибка при создании pipe: %v\n", err)
                os.Exit(1)
        }

        if err := cmd.Start(); err != nil {
                fmt.Fprintf(os.Stderr, "[LOGGER] Не удалось запустить dmesg: %v\n", err)
                fmt.Println("[LOGGER] Попробуйте запустить программу с sudo.")
                os.Exit(1)
        }

        scanner := bufio.NewScanner(stdout)
        for scanner.Scan() {
                line := scanner.Text()
                if strings.Contains(strings.ToLower(line), "killed process") &&
                        strings.Contains(line, "oom") {
                        fmt.Printf("[LOGGER] ⚠️  Обнаружено сообщение OOM-killer:\n%s\n", line)
                        // Можно завершить программу, но на самом деле процесс уже мёртв
                        // Это сообщение может прийти уже после того, как нас убили,
                        // но в рамках теста — выводим и выходим.
                        break
                }
        }

        if err := scanner.Err(); err != nil {
                fmt.Fprintf(os.Stderr, "[LOGGER] Ошибка при чтении dmesg: %v\n", err)
        }

        // Ждём завершения (на практике до этого не дойдёт — нас убьют раньше)
        wg.Wait()
}
root@debian-12:/srv# dmesg | grep oom
[ 568.321823] oom-hog invoked oom-killer: gfp_mask=0x140dca(GFP_HIGHUSER_MOVABLE|__GFP_COMP|__GFP_ZERO), order=0, oom_score_adj=0
[ 568.321834] CPU: 2 PID: 40019 Comm: oom-hog Not tainted 6.1.0-21-amd64 #1 Debian 6.1.90-1
[ 568.321886] oom_kill_process.cold+0xb/0x10
[ 568.322034] [ pid ] uid tgid total_vm rss pgtables_bytes swapents oom_score_adj name
[ 568.322084] [ 40016] 0 40016 1361892 938391 9580544 245468 0 oom-hog
[ 568.322088] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-4.scope,task=oom-hog,pid=40016,uid=0
[ 568.322124] Out of memory: Killed process 40016 (oom-hog) total-vm:5447568kB, anon-rss:3753564kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:9356kB oom_score_adj:0
root@debian-12:/srv# swapon --show
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 975M 10.3M -2


у меня приложенька регуряно убивается oom-киллером в тестовой среде. терминал почти никогда не зависает. но своп отключен, если памяти >8G своп уже не нужен.
Согласен с тем что кейс не такой же как если бы была медленная утечка памяти, но всё же.

1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность