powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / vector на триллион объектов
25 сообщений из 332, страница 10 из 14
vector на триллион объектов
    #39991557
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А других конфигураций не бывает?

Девелоперские. Тестовые.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991561
это вы щас обсуждаете яву, которая работает с памятью через жопу?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991582
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020, ты чего злой такой? Пятница-же.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991607
просто вопрос, где злой
интересно же, чего там ява выделить не может, а C++ может
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991611
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Она использует те-же функции ядра при создании heap/metaspace.

Баг нужно воспроизвести. И тогда будет повод поговорить. Ты можешь его воспроизвести?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991617
я с явой не работаю.
а зачем баг явы в векторе на триллион объектов?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991620
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это к Леониду.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991625
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
а зачем баг явы
"Это не баг, это фича".
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991626
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще бремя доказательства - на утверждающем. Не будем искусственно высасывать баги из пальца.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991630
ну ладно, а на вектор то памяти дадут в линухе?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991632
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хз. Надо уйти от триллиона объектов и заменить на что то измеримое.

Я не помню чему у тебя там был равен 1 штук .
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991641
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
это вы щас обсуждаете яву, которая работает с памятью через жопу?
через жопу это когда работаем сразу с триллионом и не сбрасываем что то на диск. Например, в субд.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991647
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вопросе есть несколько смыслов.
1) Хардверный смысл. Не вся разрядная сетка указателя используется. 64 бита там может быть.
Но текущая аппаратура - не позволит.

Например у меня сведенья о CPU содержат вот такой комментарий:

Код: plaintext
1.
address sizes : 43 bits physical, 48 bits virtual



у вас - возможно - цифры будут другие. Но тоже там далеко до 64 будет.

2) Точка зрения ОС на выделение памяти. Что считать выделением?
malloc - выделение? realloc? А может быть mmap? Нам достаточно отображения куска памяти на файл
чтобы решить задачу Алексея? Или что такое вообще НЕПРЕРЫВНЫЙ кусок памяти в современных ОС
со страничной адресацией? Это метафора?

3) Опции STD::vector. Что он делает при пере-аллокации?
Не упадём-ли мы не от нехватки памяти а от самого процесса перераспределения?

Это как в анекдоте где больной умер от процесса лечения.

4) Собственно алгоритмизация. Зачем Алексею триллион объектов? Какой такой алгоритм
не может быть решен меньшими ресурсами? Почему этот триллион нельзя положить РСУБД
или в NoSQL систему.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991650
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИли что такое вообще НЕПРЕРЫВНЫЙ кусок памяти в современных ОС со страничной адресацией?

Непрерывный диапазон адресов в виртуальном адресном пространстве процесса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991652
mayton
Хз. Надо уйти от триллиона объектов и заменить на что то измеримое.

Я не помню чему у тебя там был равен 1 штук .

хм, а указатели на другие структуры считать?
скажем, 100 байт.
триллиона конечно не будет, это с запасом. В перспективе ярд.
Но на диск конечно надо будет скидывать. А грузить только активных.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991665
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай взглянем с точки зрения strace и операционной системы. Что она видит.

Я упростил задачу. До 100 байтных объектов в количестве триллион мы еще дойдем.
Пока выделим 1 000 000 целых чисел в векторе.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#include <vector>
#include <iostream>
#include <random> 

using namespace std;

int main(int argc, char **argv) {
  cout << "START!\n";
  cout << "C++ standard : " << __cplusplus << "\n";
  default_random_engine generator;
  uniform_int_distribution<int> distribution(1,10000);
  vector<int> v; 
  for(unsigned long i = 0 ; i < 1'000'000 ; i++) {
      int dice = distribution(generator);
      v.push_back(dice); 
  }
  cout << "FINISH!\n";
}



Трассировка системных вызовов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
..............здесь много мусора инициализации. Но интересное начинается после чекпоинта с названием START
..........
write(1, "START!\n", 7START!
)                 = 7
write(1, "C++ standard : 201402\n", 22C++ standard : 201402
) = 22
brk(0x5615d5854000)                     = 0x5615d5854000
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab854000
brk(0x5615d5844000)                     = 0x5615d5844000
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab813000
munmap(0x7f4dab854000, 135168)          = 0
mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab792000
munmap(0x7f4dab813000, 266240)          = 0
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab691000
munmap(0x7f4dab792000, 528384)          = 0
mmap(NULL, 2101248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab490000
munmap(0x7f4dab691000, 1052672)         = 0
mmap(NULL, 4198400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab08f000
munmap(0x7f4dab490000, 2101248)         = 0
write(1, "FINISH!\n", 8FINISH!
)                = 8
munmap(0x7f4dab08f000, 4198400)         = 0
exit_group(0)                           = ?
+++ exited with 0 +++



И здесь некоторые сведения о версии компиллятора и платформе что я использовал.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
uname -srvmpio 
Linux 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

g++ --version
g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



stdout без трассировки

Код: plaintext
1.
2.
3.
4.
./main.exe
START!
C++ standard : 201402
FINISH!



Кто готов прокомментировать?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991677
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
mayton
Хз. Надо уйти от триллиона объектов и заменить на что то измеримое.

Я не помню чему у тебя там был равен 1 штук .

хм, а указатели на другие структуры считать?
скажем, 100 байт.
триллиона конечно не будет, это с запасом. В перспективе ярд.
Но на диск конечно надо будет скидывать. А грузить только активных.
если грузить на диск то задача совершенно меняется. Разве не увидел?
Сколько активных и почему так много?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991684
да надо закладываться на максимум
вдруг ВСЕ станут активными
скидывать на диск надо просто потому, что память ведь иногда перезагружать придётся
ну и соот-но можно и активность мониторить
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991685
mayton
Кто готов прокомментировать?

вроде вектор заполняем, а на деле какие-то файлы мапятся в память...
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991687
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
да надо закладываться на максимум
вдруг ВСЕ станут активными
скидывать на диск надо просто потому, что память ведь иногда перезагружать придётся
ну и соот-но можно и активность мониторить

Я тебя разочарую.
Ограничения в системах есть ВСЕГДА.
Это не искусственный интеллект.
- сами по себе все активными не станут.
Ты программист или кто?
В очередь не можешь поставить?
Вычислить потребные мощности не можешь?
Что за детское "вдруг"?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991688
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посмотреть на эти цифры - то видно как второй аргумент функции mmap растет по эспоненте.
Это похоже на рост нашего тела вектора.

Вот тут пишут что 2 аргумент - это есть length. Тоесть фактически это длина нашего вектора.
https://man7.org/linux/man-pages/man2/mmap.2.html

Сначало он 132 килобайта. Потом 260 и так далее. Я так себе понимаю что это и есть квантовая
механика realloc. Просто операционка это видит как игры с маппингом на файл с дескриптором -1.
При успехе - возвращает адрес аллокации. Видно что с каждым растягиванием вектора этот
адрес изменяется.

Код: plaintext
1.
2.
3.
4.
5.
6.
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab854000
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab813000
mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab792000
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab691000
mmap(NULL, 2101248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab490000
mmap(NULL, 4198400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4dab08f000



Между этими вызовами стоит m-unmap. Это инвалидация предыдущего маппинга.

Вот такой вот low-level взгляд.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991698
PetroNotC Sharp
Алексей Роза 2020
да надо закладываться на максимум
вдруг ВСЕ станут активными
скидывать на диск надо просто потому, что память ведь иногда перезагружать придётся
ну и соот-но можно и активность мониторить

Я тебя разочарую.
Ограничения в системах есть ВСЕГДА.
Это не искусственный интеллект.
- сами по себе все активными не станут.
Ты программист или кто?
В очередь не можешь поставить?
Вычислить потребные мощности не можешь?
Что за детское "вдруг"?

Ой милай, расскажи это юзерам. Не хотят в очереди стоять, падлы, уходят к конкуренту и тут жи про тибя забывают нафсигда
Намучался я с ними, может ты их образумишь, нупажалуста?
mayton
Просто операционка это видит как игры с маппингом на файл с дескриптором -1.

в смысле "видит", я думал это то, что она делает. Зачем писать mmap, если там malloc/realloc?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я и не говорю что надо писать mmap.

Мы просто наблюдаем что делает ос чтобы понять свойства этой аллокаций.
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991721
но почему ОС назвала это mmap?
...
Рейтинг: 0 / 0
vector на триллион объектов
    #39991722
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно malloc/realloc просто по стеку вызывают mmap/munmap а утилита стрейс просто показывает
последнюю точку стека которую видит ядро. Тоесть ядро не видит никакого malloc. А видит игры
с мемори маппином. А этот загадочный дескриптор -1. Хм... возможно имеется в виду swap.
...
Рейтинг: 0 / 0
25 сообщений из 332, страница 10 из 14
Форумы / C++ [игнор отключен] [закрыт для гостей] / vector на триллион объектов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]