LINUX.ORG.RU

Сообщения qq6ka

 

Неопознанные ругательства в messages

Здравствуйте. В системных логах с частотой несколько раз в секунду пишется следующее:

2014-07-24T00:04:35.320886+10:00 linux-1qh3 kernel: [1771093.550011] ------------[ cut here ]------------
2014-07-24T00:04:35.320905+10:00 linux-1qh3 kernel: [1771093.550018] WARNING: at /home/abuild/rpmbuild/BUILD/kernel-default-3.7.10/linux-3.7/include/linux/kref.h:42 kobject_get+0x33/0x40()
2014-07-24T00:04:35.320907+10:00 linux-1qh3 kernel: [1771093.550019] Hardware name: To be filled by O.E.M.
2014-07-24T00:04:35.320908+10:00 linux-1qh3 kernel: [1771093.550020] Modules linked in: npreal2(O) snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_pcm iTCO_wdt iTCO_vendor_support snd_timer acpi_cpufreq processor mperf snd r8169 mei i2c_i801 coretemp soundcore shpchp gpio_ich lpc_ich kvm crc32c_intel ghash_clmulni_intel cryptd pcspkr sg snd_page_alloc mfd_core pci_hotplug microcode autofs4 raid456 async_raid6_recov async_pq raid6_pq async_xor xor async_memcpy async_tx raid10 raid0 raid1 xhci_hcd ehci_hcd video thermal_sys usbcore usb_common scsi_dh_rdac scsi_dh_hp_sw scsi_dh_alua scsi_dh_emc scsi_dh [last unloaded: npreal2]
2014-07-24T00:04:35.320909+10:00 linux-1qh3 kernel: [1771093.550044] Pid: 6807, comm: python Tainted: G        W  O 3.7.10-1.1-default #1
2014-07-24T00:04:35.320910+10:00 linux-1qh3 kernel: [1771093.550045] Call Trace:
2014-07-24T00:04:35.320911+10:00 linux-1qh3 kernel: [1771093.550053]  [<ffffffff81004728>] dump_trace+0x78/0x2c0
2014-07-24T00:04:35.320912+10:00 linux-1qh3 kernel: [1771093.550057]  [<ffffffff8153b44e>] dump_stack+0x69/0x6f
2014-07-24T00:04:35.320912+10:00 linux-1qh3 kernel: [1771093.550061]  [<ffffffff81043f69>] warn_slowpath_common+0x79/0xc0
2014-07-24T00:04:35.320913+10:00 linux-1qh3 kernel: [1771093.550064]  [<ffffffff812b2183>] kobject_get+0x33/0x40
2014-07-24T00:04:35.320914+10:00 linux-1qh3 kernel: [1771093.550067]  [<ffffffff8116a96e>] cdev_get+0x2e/0x70
2014-07-24T00:04:35.320915+10:00 linux-1qh3 kernel: [1771093.550070]  [<ffffffff8116a9bc>] exact_lock+0xc/0x20
2014-07-24T00:04:35.320915+10:00 linux-1qh3 kernel: [1771093.550074]  [<ffffffff81386ec4>] kobj_lookup+0xd4/0x150
2014-07-24T00:04:35.320916+10:00 linux-1qh3 kernel: [1771093.550077]  [<ffffffff8116b26e>] chrdev_open+0xfe/0x1a0
2014-07-24T00:04:35.320917+10:00 linux-1qh3 kernel: [1771093.550080]  [<ffffffff811654a6>] do_dentry_open+0x206/0x290
2014-07-24T00:04:35.320918+10:00 linux-1qh3 kernel: [1771093.550083]  [<ffffffff811742c1>] do_last+0x2e1/0xed0
2014-07-24T00:04:35.320918+10:00 linux-1qh3 kernel: [1771093.550086]  [<ffffffff81174f73>] path_openat+0xc3/0x4d0
2014-07-24T00:04:35.320919+10:00 linux-1qh3 kernel: [1771093.550088]  [<ffffffff81175ed4>] do_filp_open+0x44/0xb0
2014-07-24T00:04:35.320920+10:00 linux-1qh3 kernel: [1771093.550091]  [<ffffffff81166663>] do_sys_open+0xf3/0x1e0
2014-07-24T00:04:35.320921+10:00 linux-1qh3 kernel: [1771093.550094]  [<ffffffff8154f2ed>] system_call_fastpath+0x1a/0x1f
2014-07-24T00:04:35.320921+10:00 linux-1qh3 kernel: [1771093.550098]  [<00007fcf8af0ab0d>] 0x7fcf8af0ab0c
2014-07-24T00:04:35.320922+10:00 linux-1qh3 kernel: [1771093.550099] ---[ end trace c2434297db2d73f8 ]---

Pid каждый раз разные. Помогите избавиться от напасти.

Linux linux-1qh3.site 3.7.10-1.1-default #1 SMP Thu Feb 28 15:06:29 UTC 2013 (82d3f21) x86_64 x86_64 x86_64 GNU/Linux

qq6ka
()

Браузеры съедают память.

Есть один код.

<script type="text/javascript">
window.setInterval(function(){
	$(document).ready(function(){
        $('#load_this').load('/mydata/?groups=bu-5,bu-6,main_environment,podp,gu-gor-1000,gu-gor-800,');
	});
}, 4000);
</script>

<table width="100%" class="main">
    <tr valign="top"><td><div id="load_this"></div></td></tr>
</table>

Суть в том, что примерно за 14 часов IE с начальных 36MB начинает потреблять 1GB памяти. FF так вообще 1.5GB, но он и так отжирает больше 300.

Как починить?

 , ,

qq6ka
()

Сборка драйвера для Moxa

linux-1qh3:/usr/src/linux-3.7.10-1.16 # /tmp/moxa/mxinst m64

===============================================================================
Copyright (C) 2002-2012  Moxa Inc.
All Rights Reserved.

MOXA NPort Server Real TTY Driver V1.18 Installation.
System Imformation: Kernel 3.7.10-1.1-desktop; Machine x86_64.
===============================================================================


Tar files, please wait ... OK!
Building driver...

If you want to use secure communication with target,
you might choose [y] to enable the SSL function.
Note: This function support RealCOM with secure mode only.
Do you want to enable secure function? [y/N].
n
make -C /lib/modules/3.7.10-1.1-desktop/build SUBDIRS=/tmp/moxa modules
make[1]: Entering directory `/lib/modules/3.7.10-1.1-desktop/build'
make[1]: Nothing to be done for `modules'.
make[1]: Leaving directory `/lib/modules/3.7.10-1.1-desktop/build'
cp -p npreal2.ko /lib/modules/3.7.10-1.1-desktop/kernel/drivers/char/
cp: cannot stat ‘npreal2.ko’: No such file or directory
make: *** [module] Error 1
Check Driver...
FAILED !!!

Install Not Completed !

makefile - http://rghost.net/49202572, если чем поможет. Что делать?

qq6ka
()

Matplotlib - отсечки для нескольких графиков

import matplotlib.pyplot as my_graph
import matplotlib.dates as mdates
def several_tag(tags):
	mmin=[]
	mmax=[]
	current_db=r.hget('db_id', 'value')
	data=db_arch[current_db]

	for ctag in tags:
		vals=[]
		times=[]
		tag_values=data.find({'tagname':ctag},{'value':1,'time':1,'_id':0})
		for tag in tag_values:
			try:
				vals.append(round(float(tag['value']),2))
			except:
				vals.append(0)
			times.append(datetime.fromtimestamp(tag['time']))

		mmin.append(min(vals))
		mmax.append(max(vals))
		my_graph.ylim(min(mmin)-5,max(mmax)+5)

		my_graph.plot(times, vals)

		axes = my_graph.subplot(1, 1, 1)
		axes.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M:%S"))
		locator=mdates.ticker.FixedLocator([mdates.date2num(times[vals.index(min(vals))]),mdates.date2num(times[vals.index(max(vals))])])
		axes.xaxis.set_major_locator(locator)

		my_graph.xticks(size="xx-small", color="gray")

		my_graph.annotate('max: %s' % max(vals), size="x-small", color="red", xy=(mdates.date2num(times[vals.index(max(vals))]), max(vals)), xycoords='data', xytext=(10, 10), textcoords='offset points', arrowprops=dict(arrowstyle='-|>'))
		my_graph.annotate('min: %s' % min(vals), size="x-small", color=(0.4, 0.5, 0.3), xy=(mdates.date2num(times[vals.index(min(vals))]), min(vals)), xycoords='data', xytext=(15, -15), textcoords='offset points', arrowprops=dict(arrowstyle='-|>'))

		my_graph.grid(True)

	my_graph.savefig(r'1.png', transparent=True)


several_tag(['MKA50GE004ZQ_V', 'MKA50GE003ZQ_V'])

http://rghost.net/48775269.view - результат быдлокода.

Как сделать отметки экстремальных значений на временной линейке для обоих графиков?

 

qq6ka
()

Mongodb Driver for Scala

С джавой не знаком. Со скалой второй день. Пытаюсь подцепить Casbah для работы с монгой. Скачал драйвер джавы, прикрепил в IDEA в как библиотеку com. Импорт import com.mongodb без ошибок.

Создаю build.sbt с содержанием

libraryDependencies ++= Seq(
  "org.mongodb" %% "casbah" % "2.6.2"
)

sbt -> compile отрабатывает без ошибок, но импорт ругается

object casbah is not a member of package com.mongodb
import com.mongodb.casbah.Imports._
                   ^

Вопросы:

1. Почему org.mongodb, когда библиотека com

2. В другом мануале видел val casbah = «com.mongodb.casbah» %% «casbah» % «2.1.5.0». sbt compile проходит, но импорт так и ругается.

3. Что должно произойти? Он должен найти библиотеку com и дописать туда нужные вещи?

4. Может библиотеку джавы закинуть в другое место?

 ,

qq6ka
()

MongoDB. Очень много записей

Так получается, что в проекте в коллекцию пишется около 750000 записей в час. Нужно как-то грамотно организовать работу с ними.

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

Решал кто подобные задачи? Как?

 

qq6ka
()

Помогите с логикой программы

Есть много устройств на RS-232,485 интерфейсах, опрашиваемых по всяким протоколам.

Есть классы:

-Очередь (хранит список команд, которые поочередно выполняет прибор)

-Генератор очереди (запихивает команды в очередь)

-Считыватель очереди (вытаскивает из очереди по одной команде и отправляет в Читатель)

-Читатель прибора (выполняет команду на приборе, возвращает статус)

Сейчас Генератор очереди и Считыватель очереди запускаются в двух потоках и все пихается в одну очередь. Но этот вариант не подходит, поскольку пока один прибор выполняет команду - другие спят.

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

Смотреть в сторону процессов или проще можно как-то? ЯП - python.

 

qq6ka
()

Значение переменной не восстанавливается

functions={
    'metran-910': ['port_address','port_baudrate','bus_address','function','register_start','register_count'],
    }
    
def get_queue(device, function):
    print function
    devices = Device.objects.filter(type=device,interview=True)
    for device in devices:
        for field,value in device.__dict__.items():
            if field in function:
                index=function.index(field)
                del function[index]
                function.insert(index,value)
                
def start_get_queue():
    for device,function in functions.items():
        get_queue(device,function)

При первом вызове:

>>> start_get_queue()
['port_address', 'port_baudrate', 'bus_address', 'function', 'register_start', 'register_count']

При втором и последующих вызове список function уже хранит значение:

>>> start_get_queue()
[14L, 115200L, 1L, 'function', 'register_start', 'register_count']

Как лечить?

 

qq6ka
()

Простое дерево в админке Джанго

Есть модели:

class Bus(MPTTModel):
	name = models.CharField(max_length=100)

class Device(Category):
	name = models.CharField(max_length=100)
	bus = models.ForeignKey(Bus)

class Tag(models.Model):
	title = models.CharField(max_length=200)
	device = models.ForeignKey(Device)

Как в админке джанго показать в виде дерева?

 ,

qq6ka
()

Чтение с прибора по Modbus RTU

Не совсем по теме, но все же.

Есть прибор Метран-910. Пытаюсь читать значения аналоговых входов. Функция в протоколе Modbus RTU - 04. Значение на одном из входов = 2,350 мА

def modbus_read(device_id, function, first_registr, registr_count):
    r=struct.pack("!2b2h", device_id, function, first_registr, registr_count)

    res = crc16(r)
    CRC1= "{:c}".format(res >> 8)
    CRC2= "{:c}".format(res & 0xFF)

    ser = serial.Serial(14, timeout=1, baudrate='115200')
    ser.flushInput()
    ser.flushOutput()
    ser.write(r+CRC2+CRC1)
    time.sleep(1)
    h=struct.unpack("=3b", ser.read(3))
        
    while ser.inWaiting() > 2:
        print struct.unpack(">f", ser.read(4))


    
    ser.close()                         


modbus_read(1,4,0,12)

Запрос: 01 04 00 00 00 0C F0 0F

Ответ: 01 04 18 00 00 00 00 6A E7 40 16 00 00 00 00 00 00 7F 80 00 00 7F 80 00 00 7F 80 12 C6

01 04 18 - шапка, содержащая адрес прибора, код функции, и количество байт с ответом (18=24)

Т.е. нужные мне значения шести каналов:

1.00 00 00 00	=0
2.6A E7 40 16	=2,350 Хранится в виде float 32bit
3.00 00 00 00	=0
4.00 00 7F 80	=обрыв
5.00 00 7F 80	=обрыв
6.00 00 7F 80	=обрыв

И тут я застрял.

    while ser.inWaiting() > 2:
        print struct.unpack(">f", ser.read(4))
Выдает "левые" значения:
(0.0,)
(1.3978225080712631e+26,)
(0.0,)
(4.573838187556203e-41,)
(4.573838187556203e-41,)
(4.573838187556203e-41,)

Из документации: Для чтения одного входа следует запросить значение двух последовательно расположенных 16-битных регистров и затем объеденить полученные значения. Данные разделены по двум регистрам следующим образом:

Регистр 1:
Байт1 - средний байт мантиссы (биты 8-15)
Байт2 - младший байт мантиссы (биты 0-7)

Регистр 2:
Байт1 - знак и порядок числа (биты 24-31)
Байт2 - старший байт мантиссы (биты 16-22)

В общем, такие сложности. Сам я не осилю.

Перемещено Pinkbyte из general

qq6ka
()

RSS подписка на новые темы