Покажи Публикации - sandman_7920
* Виж публикациите на потр. | Виж темите на потр. | Виж прикачените файлове на потр
Страници: [1] 2 3
1  Програмиране / Общ форум / Re: С/С++ Работа с голям брой малки файлове -: Oct 28, 2011, 13:47
Създадох един 30Гб файл на reiserfs и го маунтнах през loop и нещата излетяха от 40-50 сек. за синхронизация при запис сега синхронизира за 2-6сек. (Ако по време на инсталирането си бях заделил един дял само за това, който да е align-ат нямаше да имам такива проблеми)
2  Програмиране / Общ форум / Re: С/С++ Работа с голям брой малки файлове -: Oct 27, 2011, 01:19
При мен индекса е много точен около 100-150 файла в директория на второ ниво хеш

hash1 текущия ден от 1970 до тук (int)(time(null)/86400)
hash1/hash(1,2,3...255) 255*120 ~= 30000
проблема е че при запис аз чета snapshot от паметта и пиша/упдейтвам по 30000 файла всеки път

П.П. А за MySQL проблема беше че тези данни ми трябват в бинарен формат и там индексите си бяха ок но записа беше нещо от рода на DATA=CONCAT(data,char(value1,value2,....)) и към края на месеца писането ставаше по-бавно и тук четенето става много бързо memcpy(buffer, file1,file2 ....) send

П.П2 hash1 не е повече от 30 директории за сега
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. cd /var/lib/track-data
  4.  
  5. echo "Start purging tracks"
  6.  
  7. DIRNAME=$[$(date +%s)/86400-31]
  8.  
  9. while [ -d $DIRNAME ]; do
  10.    echo "Delete /var/lib/track-data/$DIRNAME $(date -d@$[$DIRNAME*86400])"
  11.    rm -rf $DIRNAME
  12.    DIRNAME=$[$DIRNAME-1];
  13. done
3  Програмиране / Общ форум / Re: С/С++ Работа с голям брой малки файлове -: Oct 26, 2011, 23:33
PC1 и PC2 получават едни и същи данни.
PC1 работа в реално време с клиенти
PC2 води архив по дадено ID file_id всеки запис е с дължина 12 байта, на всеки 5мин. се добавя нов запис към файл с име file_id. Всеки ден fail_id се намира в нова хеш директория.

На PC1 има mount на цялата хеш структура от PC2 през NFS по всяко едно време клиента може да поиска част от архива и тук в този момент, ако PC2 е в състояние io wait клиента чака м/у 0-40 сек.
При тази реализация, ако PC2 не е в wait при заявка от страна на клиента данните му се предоставят мигновено. Преди имах реализирам архив в MySQL при него има по-бързо записване в БД и по-бавно доставяна до клиента.

Цел колкото се може по-бързо доставяна да данните до клиента.
4  Програмиране / Общ форум / С/С++ Работа с голям брой малки файлове -: Oct 26, 2011, 18:31
Имам следната постановка
Програма която на всеки 5мин. се стартира от cron чете данни и записва около 30000 файла.
Файловете са поставени в двойна хеш структура (/root/hash1_id0/hash2_id0/files, /root/hash1_id0/hash2_id1/files)
При приключване на програмата след 4-5 сек. кернела прави синхронизация на файловата система и се генерира доста cpu io wait за колко 40/50 сек.

Нуждая се от съвет за оптимизация. (друга файлова система, отделен HDD ... )
5  Програмиране / Web development / Re: cgi-bin -: Mar 12, 2010, 15:33
Няма спор, че C/C++ cgi е много по-бързо от PHP(особено през fast-cgi), но и доста по-трудно се пише. Ако трябва да пишеш неща на по-ниско ниво ти трябва и език от по-ниско ниво C/C++ ето една много добра C++ библиотека http://www.gnu.org/software/cgicc , но ако не си писал на C++ много ще се озориш и дори да си писал трябва да имаш идея и за WEB програмирането
6  Програмиране / Общ форум / SQLITE3 ":memory:" -: Dec 07, 2009, 17:12
Здравейте, имам въпрос за SQLITE и база данни в паметта.
Искам да отворя нова база в паметта и да я попълня от буфер.
Не ми трябва с ATTACH на друг файл, а с попълване от буфер.
Код
GeSHi (C++):
  1. char *buffer; // Това е буфер с цяла sqlite база
  2. sqlite3_open(":memory:", &handle); // отваря нова БД в паметта
  3. // и тук мми трябва нещо от сорта
  4. memcpy(sqlite_pointer, buffer, buffer_size);
  5.  

Доста неща прочетох, но не намерих лесно решение (трудно такова има с писане на sqlite VFS).
Ако някой има опит моля да сподели.
7  Програмиране / Общ форум / Re: pthread Въпрос -: May 21, 2009, 16:01
Това и още доста неща съм изчел преди да пиша, просто исках мнение на някой който вече се е сблъсквал с такъв проблем.
8  Програмиране / Общ форум / pthread Въпрос -: May 21, 2009, 10:53
От няколко дена чета за синхронизиране на нишки които ползват споделена памет.

имам следната постановка
нишка 1 writer
нишка от 2 до n readers

Трябва когато writer-a запише нещо в паметта всички readers да го прочетат едновременно и да пратят данните през сокет.

Код
GeSHi (C++):
  1. int readcount = 0;
  2. semaphore wsem = 1; //
  3. semaphore x = 1; //
  4.  
  5. void writer(){
  6.  while(1){
  7.      if ((n=recv(udp_sock,&command,200,MSG_NOSIGNAL)) < 1) break;
  8.      wait(wsem);
  9.      doWriting(command,n);
  10.      signal(wsem); /* И ето тук е проблема виж 1.*/
  11.   }
  12. }
  13.  
  14. void reader(){
  15.   while(1){
  16.      wait(x);
  17.        readcount++;
  18.        if (readcount==1)
  19.             wait(wsem);
  20.      signal(x);
  21.      doReading();
  22.      wait(x);
  23.        readcount--;
  24.        if (readcount==0)
  25.             signal(wsem);
  26.      signal(x);
  27.  
  28.      send_data();
  29.  
  30.   }
  31. }
  32.  

1. Получава се така, че след сигнал от writer-a <signal(wsem)>, ако няма 'usleep(some_time)' readers нямат време да заключат семафора и writer-a продължава сам в цикъла си. Ако някой се е сблъсквал с такава постановка ако може да ме посъветва нещо.

П.С. Много ще е добре ако може да ми предложите и добре литература за pthread програмиране
П.С.2 Също така ако някой е ползвал thread_cond_wait() и thread_cond_signal() да сподели дали е по-ефективен метод
9  Хардуер за Линукс / Сървъри / Re: Тест на 1 ядро на Core2Quad -: Feb 12, 2009, 13:15
http://weather.ou.edu/~apw/projects/stress/
Не може само на едно ядро но може на всички едновременно + може и памет malloc()/free() тест с N bytes и още доста неща. Също може да направиш тест и със superPI
10  Програмиране / Общ форум / Re: C++ i delete[] въпрос -: Feb 05, 2009, 18:38
10x
11  Програмиране / Общ форум / Re: C++ i delete[] въпрос -: Feb 05, 2009, 18:24
Код
GeSHi (C++):
  1.  
  2. int W=9,H=10;
  3. char **dyn=new char*[H];
  4. for (int i=0; i<H; i++) dyn[i]=new char[W];
  5.  
  6. delete [] *dyn;
  7. delete [] dyn[0];// Това тук е за тест: *** glibc detected *** ./t: double free or corruption (fasttop): 0x0804a038 ***
  8.                        // Това не означава ли че delete [] *dyn; е успяло правилно да освободи паметта
  9. delete [] dyn;
  10.  
12  Програмиране / Общ форум / C++ i delete[] въпрос -: Feb 05, 2009, 18:05
Код
GeSHi (C++):
  1. int W=9,H=10;
  2. char **dyn=new char*[H];
  3. for (int i=0; i<H; i++) dyn[i]=new char[W];
  4.  
  5. delete [] *dyn;
  6. delete [] dyn;
  7.  
  8. /* И тук е въпроса това правилно освобождаване на паметта ли е или трябва да е: */
  9. for (int i=0; i<H; i++) delete [] dyn[i];
  10. delete [] dyn;
  11.  
13  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Mikrotik+RADIUS Проблем -: Jan 30, 2009, 18:24
Проблема с следния.
Ползвам hotspot с mac atuh през RADIUS
hotspot send auth request всичко е ок.
изтичат account правата (да кажем по време) или аз спирам даден account.
правя ръчен disconnect
`echo "User-Name=00:15:6D:BD:58:8D,Framed-IP-Address=192.168.1.2" |./radclient 172.16.2.1:1700 40 secret`
След това hotspot прави нов auth request  където вече не се пуска клиента auth=false
Но след време клиента отново е активен но hotspot вече не се мъчи за нов auth request, поне докато аз на ръка не изхвърля user-a от хост таблицата
14  Програмиране / Web development / Re: Отдалечено пращане на публичен ключ -: Jan 22, 2009, 22:48
DOM borwsers crypto.signText('') изпращане до сървера.
след това извличане не ключа от подписания текс.

За IE се ползва activeX за аналог на crypto.signText('')
15  Програмиране / Общ форум / Re: C and PROCFS -: Jan 22, 2009, 22:28
:):):) И аз до това заключение стигнах (просто ми беше мерак за нещо по-екзотично). Благодаря на всички за отговорите.
Страници: [1] 2 3