Jump to content

Wikipedia:Reference desk/Archives/Computing/2014 November 30

From Wikipedia, the free encyclopedia
Computing desk
< November 29 << Oct | November | Dec >> Current desk >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


November 30

[edit]

XFS Log Journal Write Ratio

[edit]

Dear Wikipedians,

I am planning to set up a multi-terabyte XFS filesystem, with an external 128MiB log device, and I need to know write ratio for the XFS log journal, in order to confidently select suitable hardware.

I don't know the correct technical term, but what I mean by “write ratio” is I want to know (on average) how many bytes are written to the XFS log journal for every megabyte that is written to the XFS filesystem

I have googled using every search phrase I can think of and searched for the answer in both the SGI TechPubs Library and the XFS.Org wiki, but all to no avail — perhaps I'm just not looking in the right place.

Any pointers to documentation containing the answer, or any other help whatsoever is much appreciated.

03:23, 30 November 2014 (UTC) — Preceding unsigned comment added by 203.116.251.236 (talk)

SGI indicate that the maximum log size is 128MB; the recommended size is dependant on the number of concurrent transactions, not the size of the volume, CS Miller (talk) 10:52, 1 December 2014 (UTC)[reply]

How to process data coming from sensors using C/C++

[edit]
Firstly is it even possible?? Me and my friends are going to take part in a competition where i would need to process data coming from various sensors like temp,pressure,velocity..etc. So my actual question is what do i have to write inside my program to be capable of reading incoming data( i mean what header files are to be added and what functions could be used) ?? AND Where would i upload that program in the machine?? i know it had to be uploaded in some IC, but even then wouldn't there be some protocols or something??
AND if its not possible to do it using C/C++ which language can?? point me to articles,PDFs anything helpful..ThanxAshigami (talk) 15:20, 30 November 2014 (UTC)[reply]
What you need is a data acquisition card. This will come with the appropriate drivers and header files to include in your program. Tevildo (talk) 15:44, 30 November 2014 (UTC)[reply]
All this depends mostly on what operating system you are using and what kind of sensor and data acquisition card you are using. Programming languages (like C and C++) and hardware interaction are separate topics, there is nothing about C or C++ or other programming languages that inherently deal with interacting with sensors or data acquisition cards. As Tevildo said above, your card should come with C or C++ header files that act as a C or C++ interface to the card. These header files will be specific to the card, not to C or C++. JIP | Talk 19:59, 30 November 2014 (UTC)[reply]
I'd wonder what kind of system you're talking about. If you're running a PC then it probably is fast enough that all the various irregular delays in the operating system and the language and the sheer size of the C++ library and the space taken up generally don't particularly matter. However if you're talking about something you want to be small then C++ is probably overkill though an expert can work around its problems. In the first case we're talking about a machine that probably has a gigabyte or more of memory and goes at a few GHz. In the second we're talking about something with well under one megabyte of memory, perhaps only 16kB if really crunching things, and which goes at about 10Mhz to 100Mhz. Dmcq (talk) 18:27, 1 December 2014 (UTC)[reply]
If you use C++ as a "better C", it will compile to the same machine code as C. If the C code didn't need the runtime library, the C++ code won't. Classes with virtual functions and multiple inheritance generally don't need library support. Automatic destructors are very useful for ensuring that you don't forget to release system resources like locks, and don't need library support. On the flip side, some C features do often depend on runtime library support, including automatic aggregate initialization, structure copying, and floating-point and long-long arithmetic. There's no reason to prefer C over C++ for bare-metal programming, except I suppose C99 designated initializers, which I really wish they'd add to C++. -- BenRG (talk) 21:10, 1 December 2014 (UTC)[reply]
Approaching this more theoretically: neither the C programming language nor the C++ programming language define anything called a "sensor." Actual incarnations of computer hardware, to which we may attach actual real-world sensors, typically use memory mapped I/O to read data from sensors or other peripheral hardware. Most modern computers - even many tiny embedded systems! - will wrap such low-level I/O inside of an application programming interface (API), which may be implemented in C or C++. It is this API that other contributors are describing when they say you will need a header-file or a device-driver from a data-acquisition card vendor.
Once you have acquired data, there are several standard paradigms for dealing with input data in signal processing. As you encounter more systems, you will probably find bulk data transfer through direct memory access hardware; you will probably discover the nearly universal use of a ring buffer for input data; if you program in C++, you will probably find common libraries like Boost or the Standard Template Library that are used in data processing. Once the sensor-data is located in memory, it can be treated purely as a software abstraction, and you can use C, C++, or any other preferred language to compute results or otherwise manipulate the data. If performance is an issue, you will need to carefully review the hardware limitations and the software implementations.
If you want us to point you to more specific articles or vendors, you will need to let us know what you require. Do you wish to attach a sensor to a personal computer (like a laptop or desktop)? Are you already an experienced programmer, or are you looking for something more introductory? What are the general requirements of the data - like the data rate and latency? What general type of sensor - a "pressure" sensor is awfully vague!
National Instruments is one of the most popular vendors - although many of their items are not in the price range for the typical "hobbyist." Here is a great overview article: What Is Data Acquisition, including a cartoon that shows a "sensor", a "DAQ Device," and a "Computer," with links to products they sell that can help narrow your choices. You should, of course, also look around for competitive products from other vendors; and for other types of systems and price-ranges.
Nimur (talk) 19:10, 1 December 2014 (UTC)[reply]
At the other end of the scale if you use an Arduino or mbed board the C++ support is very basic and omits many of the features normally supported by the library. Dmcq (talk) 21:37, 1 December 2014 (UTC)[reply]
It's certainly possible. I do it all the time.
The language choice is entirely separate from the operating system choice, which is somewhat separate from the hardware choice. For example:
  • You can collect data from sensors on an Arduino with no operating system whatever, using raw C++ with no libraries whatever - using assembly code for the couple of lines of code it takes to actually read the sensor.
  • Or, on the other hand, you can use something like a RaspberryPi or a BeagleBone (both small-format PC-like systems) that supply standard device drivers for reading and writing to pins on the circuit board. Again, you could write in C++ only now, you'd be using Kernel-level standard library calls to access the device using things like 'read()' and 'write()'.
  • Alternatively, you might have a desktop computer with a data acquisition card - which might have all sorts of high-level processing on-board that allows you to interact with the sensor at some much higher level...it might come with special libraries to interface with C++ that are provided by the board manufacturer.
  • There are also plenty of sensors that appear as USB devices that you could actually interact without having to write any software whatever (a digital camera is a good example of that).
C++ is very flexible in that regard - it doesn't really care what you're doing with the 1's and 0's!
There are a few data acquisition boards out there that don't have C++ support - and the manufacturer may force you to write in some other language like python or some such...either because that's all they could be bothered to support - or because your code actually runs on some kind of device that's buried deep inside their hardware.
SteveBaker (talk) 21:50, 2 December 2014 (UTC)[reply]