Покажи теми - sandman_7920
Виж публикациите на потр. | * Виж темите на потр. | Виж прикачените файлове на потр
Страници: [1]
1  Програмиране / Общ форум / С/С++ Работа с голям брой малки файлове -: 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 ... )
2  Програмиране / Общ форум / 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).
Ако някой има опит моля да сподели.
3  Програмиране / Общ форум / 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() да сподели дали е по-ефективен метод
4  Програмиране / Общ форум / 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.  
5  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 от хост таблицата
6  Програмиране / Общ форум / C and PROCFS -: Jan 22, 2009, 14:40
Здравейте имам следният въпрос.

Искам да направя програма която да ползва procfs като конфигурационен файл.
За пример искам да направя експорт на структура от C-то в /proc/primer/config:

struct sMyStruct{
   int userscount,access;
}myStruct;

myStruct.usercount=0;
myStruct.access=0;

и тук export_to("/proc/primer/config",myStruct);

и след това да имам достъп с 'cat|echo' да кажем:

echo usercount=20>/proc/primer/config

cat /proc/primer/config
usercount=20
access=0


Това как може да стане.
7  Програмиране / Общ форум / Parallel Programing -: Jan 14, 2009, 14:42
Имам въпрос който се отнася за thread.

Примера е следния

struct SharedData{
     char *buf;
     .........
     .........
} SData;

thread1-->write споделената памет
thread2-->read споделената памет

В този случай трябва ли да ползвам pthread_mutex_lock|pthread_mutex_unlock и ако да, достатъчно ли е да се ползва само в thread1
8  Програмиране / Web development / Отдалечено пращане на публичен ключ -: Jan 13, 2009, 12:20
Здравейте имам следния въпрос(проблем).
Какъв е начина за пращане на публичен ключ от страна на browser към server.
Става дума за цифров подпис искам да мога да регистрирам нови подписи в системата и ми трябва начин за автоматично пращане на public-key (client-->server-->file).
9  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Кернел бъг или imap бъг -: Dec 15, 2008, 13:21
От известно време ми забива server.
Подозирах, че е от r8169 PCI-E drivers. Патчнал съм драйверите от кернел 2.6.27-ххх, но PC-to продължава да забива.
Ето и малко лог

Dec 15 09:07:17 XXX kernel: Bad page state in process 'imapd'
Dec 15 09:07:17 XXX kernel: page:c19a3580 flags:0x8008000c mapping:00000000 mapcount:0 count:0
Dec 15 09:07:17 XXX kernel: Trying to fix it up, but a reboot is needed
Dec 15 09:07:17 XXX kernel: Backtrace:
Dec 15 09:06:30 XXX kernel: Pid: 24841, comm: imapd Not tainted 2.6.25.19-IMQ-NEW-smp #1
Dec 15 09:06:30 XXX kernel:  [<c0153313>] bad_page+0x73/0xb0
Dec 15 09:06:30 XXX kernel:  [<c0153957>] free_hot_cold_page+0x187/0x1a0
Dec 15 09:06:30 XXX kernel:  [<c0156f5c>] put_page+0xbc/0xf0
Dec 15 09:06:30 XXX kernel:  [<c0150c1a>] generic_file_aio_read+0x33a/0x5e0
Dec 15 09:06:30 XXX kernel:  [<c0171e35>] do_sync_read+0xd5/0x120
Dec 15 09:06:30 XXX kernel:  [<f8dc383a>] rtl8169_rx_interrupt+0x3aa/0x590 [r8169] -----> Отново r8169 проблем.
Dec 15 09:06:30 XXX kernel:  [<c01360e0>] autoremove_wake_function+0x0/0x40
Dec 15 09:06:30 XXX kernel:  [<c0139010>] lock_hrtimer_base+0x20/0x50
Dec 15 09:06:30 XXX kernel:  [<c035002c>] security_file_permission+0xc/0x10
Dec 15 09:06:30 XXX kernel:  [<c0171ede>] rw_verify_area+0x5e/0xd0
Dec 15 09:06:30 XXX kernel:  [<c0128635>] __do_softirq+0x75/0xf0
Dec 15 09:06:30 XXX kernel:  [<c0171d60>] do_sync_read+0x0/0x120
Dec 15 09:06:30 XXX kernel:  [<c01726ed>] vfs_read+0x9d/0x140
Dec 15 09:06:30 XXX kernel:  [<c0172bf1>] sys_read+0x41/0x70
Dec 15 09:06:30 XXX kernel:  [<c0104092>] syscall_call+0x7/0xb
Dec 15 09:06:30 XXX kernel:  =======================

Ако някой има какво да каже моля да го направи :):)
10  Програмиране / Web development / Mysql Слепване на бинарни данни -: Oct 10, 2008, 14:33
Как може да се слепят бинарни данни с най-малко закъснение.
В момента ползвам a=CONCAT(a,CHAR('alabala'));
Максималната дължина на данните е 4610 байта.
Когато данните стигнат до 2500-3000 байта ми отнема о/о 2.5-4 сек.
Прависе insert/update на о/о 6000 записа.
Ето и заявката:

SET @CALC_TS=TRUNCATE(UNIX_TIMESTAMP()/86400,0)*86400;
INSERT INTO table1 (TSTAMP,A,DATA)
        SELECT @CALC_TS AS TS,A,CHAR(table2.TSTAMP,
                                        table2.a ^ 0x55555555,
                                        table2.b ^ 0x55555555,
                                        table2.c ^ 0x5555,
                                        table2.d ^ 0x5555) AS DTA FROM table2
        ON DUPLICATE KEY UPDATE
                DATA=CONCAT(DATA,CHAR(table2.TSTAMP,
                                      table2.a ^ 0x55555555,
                                      table2.b ^ 0x55555555,
                                      table2.c ^ 0x5555,
                                      table2.d ^ 0x5555));

Пояснение:
   table1 TSTAMP,A=primary key
   table1 DATA=varbinary(4610)



11  Програмиране / Web development / Hosting server -: Apr 21, 2008, 14:28
Здравейте на всички.
Имам нужда от няколко съвета за hosting server с apache+php

Става въпрос най-вече за сигурността на системата.
1. PHP потребителите да не могат да четат файлове извън webroot-а си.
2. Да не могат през PHP-то да се изпълняват външни програми извън (да кажем) webroot/bin/ директория.
3. И други подобни проблеми.

Порових се в google за най-правилния начин за справяне с тази задача.
От прочетеното видях, че доста народ ползва решение със следните компоненти:
apache2+php5+fastcgi+suexec (но тук става въпрос за php чрез cgi, а не като модул)

Ако някой е правил hosting server, моля да ми даде съвет дали това е най удачния вариант или има и друг да кажем mod_php.so + safe_mode etc.
12  Linux секция за начинаещи / Настройка на програми / БТК adsl bridge -: Apr 04, 2008, 17:30
Здравейте, на всички.
Сега на въпроса някой успял ли да подкара adsl-а в бридж режим под linux с pppoe. Под windows става без проблем, но под linux не успях да се справя.

Има много плюсове в това:
no more NAT '<img'> от това отпада един от най-големите проблеми на ADSL-а не забива вече от много конекции защото вече не се пълни conntrack таблицата и вече няма недостик на RAM на самото устройство. Да не говорим, че може да си пуснеш upload трафика през друго място и т.н.

Моля някой да сподели мнение.



13  Linux секция за начинаещи / Настройка на програми / Проблем с rrdtool -: Feb 20, 2008, 13:03
Много гаден проблем ми се очертава с rrdtool

Схема на rrd базата

-s 300\
DS:in:COUNTER:600:0:4294967295\
DS:out:COUNTER:600:0:4294967295\
RRA:AVERAGE:0.5:1:576\
RRA:AVERAGE:0.5:6:672\
RRA:AVERAGE:0.5:24:732\
RRA:AVERAGE:0.5:144:1460

Дотук всичко си е съвсем тривиално.
За Max на DS на rrd-то е сложена максималната стойност за един 32-bit counter

Проблема е следния взимам данните за трафика на ланките от /proc/net/dev и след рестарт на системата брояча им се нулира и при следващият отчет ми се генерира 100mbit. трафик, защото rrd-to си мисли, че брояча е стигнал макс. (2^32) и е превъртял (current=MAX-OLD+NEW).

Когато се ползва snmp за събиране на данните за броячите няма този проблем, защото snmp-to гледа system uptime.

Много, ама много ще се радвам, ако някой ми помогне,даде съвет или ми каже от къде да прочета решение за проблема.
Страници: [1]