LINUX.ORG.RU

Java limit cpu cores

 , ,


0

2

Как ограничить количество ядер используемых для работы приложения именно программно, в коде? У меня такое ТЗ. Linux Ubuntu. Инфы очень мало в бурже. Может есть проверенные библиотеки?


Ответ на: комментарий от Deleted

пиши программу работающую в один поток

Мне нужно использовать n ядер из m существующих. Один поток займет одно ядро.

Есть мнение что в JVM нельзя управлять количеством ядер и это можно сделать только на уровне ОС, но вроде как есть библиотеки на java, которые могут.

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

Мне нужно использовать n ядер из m существующих. Один поток займет одно ядро.

отлично, сколько ядер займет n-потоков?

Deleted
()
Ответ на: комментарий от mrXorg

Сильно подозреваю, что это библиотеки на С, которые через jni дергают из джавы. В любом случае, это сильно зависит от ос. И да, вангую, что заказчик на тяжелых веществах, если хочет именно так, как ты описал.

hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

заказчик ничего не понимает в программировании а хочет чтобы компьютер не занимал все, а топикстартер ничего не понимает в программировании иначе бы заюзал threadpool на n-потоков и делал бы ресурсоемкие задачи в нем

Deleted
()
Ответ на: комментарий от mrXorg

просетай через параметры jvm. подругому никак. Как можно писать такое в TЗ???

ii8_ ★★★★
()
Ответ на: комментарий от Deleted

Согласен. Про сред пул тож не факт, так как пока jvm будет стартавать бедет жрать как ей нравистя, если её носм не ткнуть)

ii8_ ★★★★
()
Ответ на: комментарий от Deleted

отлично, сколько ядер займет n-потоков?

Допустим нужно 20 потоков и есть 8 ядер. Нужно использовать только 4 ядра для этих 20 потоков. Неужели для тебя это так сложно?

mrXorg
() автор топика
Ответ на: комментарий от ii8_

пока оно будет стартовать оно будет жрать один поток, если конечно не юзать какойнить говнофреймворк

Deleted
()
Ответ на: комментарий от mrXorg

Допустим нужно 20 потоков и есть 8 ядер. Нужно использовать только 4 ядра для этих 20 потоков. Неужели для тебя это так сложно?

Видимо это для тебя сложно понять что если тебе надо загрузить 4 ядра то у тебя должно быть 4 потока, и что это очень легко сделать если код в твоих руках

Deleted
()
Ответ на: комментарий от Deleted

а топикстартер ничего не понимает в программировании иначе бы заюзал threadpool на n-потоков и делал бы ресурсоемкие задачи в нем

Для threadpool никогда не нужно ограничивать количество ядер? Чувак, у меня для тебя плохие новости. Походу HighLoad это не твоё...

mrXorg
() автор топика
Ответ на: комментарий от Deleted

Видимо это для тебя сложно понять что если тебе надо загрузить 4 ядра то у тебя должно быть 4 потока, и что это очень легко сделать если код в твоих руках

Объясните этому недалекому, что есть задачи, которые не решаются в 4 потока.

mrXorg
() автор топика
Ответ на: комментарий от hippi90

ты говоришь как студент, irl это нормальная постановка задачи, только при этом надо было прежде чем кидать в ide сначала выяснить зачем заказчик это хочет, но программисты обычно не умеют общятся с людьми

Deleted
()
Ответ на: комментарий от mrXorg

бу-га-га-га

приведи пример я поржать

Deleted
()
Ответ на: комментарий от mrXorg

Походу HighLoad это не твоё...

Странный у тебя диагноз 8)

Для threadpool никогда не нужно ограничивать количество ядер?

Ты щас себе представил какую реализацию, а то там же есть и пул в один поток 8)

Deleted
()
Ответ на: комментарий от Deleted

subwoofer, ты и дальше можешь доказывать тут всем какой ты аутист. Мне наплевать на твое мнение о заказчике, о программистах, а твоей никчемной жизни. Мне интересно решение задачи, которую я тут описал. Продолжай писать в моей тебе, раб, а мы посмеемся над тобой.

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

Мне интересно решение задачи, которую я тут описал.

Ну тогда тебе надо научится читать 8)

Продолжай писать в моей тебе, раб, а мы посмеемся над тобой.

Спасибо что разрешил, вы это кстати ты и твоя тульпа? Можешь не отвечать, я понимаю.

Deleted
()

Инфы очень мало в бурже. Может есть проверенные библиотеки?

Что за лол? Кури ExecutorService:

[code=Java]
int processors = Runtime.getRuntime().availableProcessors();

ExecutorService executor = Executors.newFixedThreadPool(processors);
long end = 0;
for(int t = 0; t < processors; t++) {
executor.submit(new Runnable() {

@Override
public void run() {
doYourDirtyStuff();
}
});
}
executor.shutdown();
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.MINUTES);
}
[/code]

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled

Что за лол? Кури ExecutorService:

Что за день идиотов? Вам обоим видно не судьба понять, что нужно чтобы работало больше потоков, чем использовалось ядер. Для начала прочитайте про Hyper Threading аутисты.

mrXorg
() автор топика
Ответ на: комментарий от Deleted

subwoofer, не позволяю. Отлижи, а потом напиши сюда, чтобы получить новые указания.

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

Далегко. Ты засунеш JNI в код ради этого? Вотпожалуйста

#include <sched.h>

int sched_setaffinity(pid_t pid, size_t cpusetsize,                             const cpu_set_t *mask);

int sched_getaffinity(pid_t pid, size_t cpusetsize,                         cpu_set_t *mask);

пожалуйста, этим можно пиду сменить настройки щудулера. Дергается из любого нативного языка. Кроссплатформенной либы - нет т.к. специфика. Примеры jni для сиго апи в интернетах - нагуглил за 2 минуты, как для pure-jni так и для JNA.

Ссылок не будет, ибо Вы крайне грубо и вызывающе себя ведете, как для 3 летнего регистранта.

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

anonymous
()
Ответ на: комментарий от anonymous

Ты засунеш JNI в код ради этого?

Нет, если у меня будут пруфы, что это нельзя сделать средствами Java

mrXorg
() автор топика
Ответ на: комментарий от Deleted

subwoofer, молодец, что выполнил моё прошлое задание. Теперь сбрей и сожри свои лобковые волосы. Затем снова напиши сюда.

mrXorg
() автор топика

Jcgroup попробуй. Но зачем тащить это в код, когда можно сделать на уровне ОС? А насчет параметра jvm, способного ограничивать количество ядер, я что то не припомню такого.

anonymous
()
Ответ на: комментарий от anonymous

Jcgroup попробуй

Видел эту библиотеку когда гуглил, но не нашел там настройку количества ядер.

mrXorg
() автор топика

в джаве ты не можешь ограничить когда и на скольких ядрах у тебя запустится GC, не можешь отследить когда у тебя запускается JIT и ещё куча других нюансов, поэтому на практике в JVM ты строго этого ограничения добиться не сможешь.

maloi ★★★★★
()
Ответ на: комментарий от mrXorg

Количества ядер там нет. Есть конкретные ядра. По другому не знаю как. На уровне ОС тоже, насколько мне известно, процессу можно указать аффинити, но не количество ядер. Лучше сделай это на уровне ОС, не тащи в код говно.

anonymous
()
Ответ на: комментарий от maloi

maloi, спасибо за ссылку. Если библиотека работает, то это то что нужно.

mrXorg
() автор топика
Ответ на: комментарий от anonymous

Есть конкретные ядра.

Ну мне и это подойдет. Нужно использовать 2 ядра. Я и укажу 0 и 1. Хотя хреново распределять это всё тогда будем между потоками. Ведь мы не знаем какое ядро сильнее нагружено. Планировщик ОС явно с этой задачей лучше справится. Блин...

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

Во-первых, это не задача. Во-вторых, у тебя в Т.З. еще и стоит обязательно заюзать ht?

Reset ★★★★★
()
Ответ на: комментарий от mrXorg

Мне нужно использовать n ядер из m существующих. Один поток займет одно ядро.
Вам обоим видно не судьба понять, что нужно чтобы работало больше потоков, чем использовалось ядер

ты, дебилушка, уже реши что тебе надо

дете недоразвитое...

unt1tled ★★★★
()
Ответ на: комментарий от Solace

mrXorg (21.02.2015 21:51:30) агрессивный даун

ИЧСХ, этот комментарий к нему с тех пор, как комментарии вообще появились...

Stil ★★★★★
()
Ответ на: комментарий от unt1tled

Один поток займет одно ядро.

Это я писал аутисту, который предлагал мне использовать один поток на всю программу. Просто до этого дауна не доходит, что потоки в некоторых задачаю не полностью загружают ядро и надо много потоков на ядро. Я писал это всякий раз.

unt1tled, ты же вырвал мои фразы из контекста и выебываешься тут. Походу тот аутист твой друг. Даю тебе задание отсосать у него и написать сюда - чмо с раком мозга.

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

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

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

RedPossum ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.