This disclosure relates to a method and system for managing a network by generating files in a virtual file system. More particularly, this disclosure relates to generating and verifying content of a file in a virtual file system using characteristics of the file.
As the global demand for accessing online content increases, multiple network systems are needed to provide the content. Network systems send and replicate data among one another in order to deliver the same data globally, e.g., to other networks. The amount of data transferred between network systems is usually large, which can take a considerable amount of time to transfer and can be costly in terms of bandwidth usage. In some cases, the total network bandwidth of the network systems can limit the amount of data sent at a time and affect other services and applications running in the network systems.
Network bandwidth is an important commodity that can be optimized, for example, for usage and allocation. In order to optimize network bandwidth, processes may be used to determine network bandwidth limit and capacity, and test the network in situations where future demands exceed or differ from current demands. Such processes should be performed with as little impact as possible on the network systems and the applications and services running on the network systems. Techniques described herein may be used to test the network while taking into consideration resources and applications running on the network systems.
Accordingly, some implementations relate to a non-transitory computer readable medium that stores computer executable instructions, which when executed by a processor, cause the processor to carry out a method for generating content of a file in an in-memory file system. A filename is received comprising at least one file metadata. The file metadata includes a file size of the file, a random seed for generating content of the file, and modification information of the file. File content for a file is generated based on the filename, and the file content is provided to the network system.
Some implementations relate to a non-transitory computer readable medium that stores computer executable instructions, which when executed by a processor, cause the processor to carry out a method for verifying content of a file in an in-memory file system. The network system receives a file and determines a filename of the file. File metadata is determined from the filename of the file. The file metadata includes a file size of the file, a random seed for generating content of the file, and modification information of the file. File content of the file is then verified based on the file metadata and the filename of the file.
Some implementations relate to systems for generating content of a file in an in-memory file system. The system includes a processor and memory which stores computer executable instructions. When the instructions are executed by the processor, the processor directs the system to receive a filename comprising at least one file metadata. The file metadata includes a file size of the file, a random seed for generating content of the file, and modification information of the file. The system is also directed to generate file content for a file based on the filename and provide file content to the system.
Some implementations relate to systems for verifying content of a file in an in-memory file system. The system includes a processor and memory which stores computer executable instructions. When the instructions are executed by the processor, the processor directs the system to receive a file and determine a filename of the file. The system also determines file metadata from the filename of the file. The file metadata includes a file size of the file, a random seed for generating content of the file, and modification information of the file. File content of the file is verified based on the file metadata and the filename of the file.
Some implementations relate to systems for generating content of a file in an in-memory file system. The system includes a first computer system and a second computer system. The first computer system includes a processor and memory, which contains instructions that when executed by the processor, cause the processor to direct the first computer system to receive a filename. The filename includes at least one file metadata. The file metadata includes a file size of the file, a random seed for generating content of the file, and modification information of the file. The system generates file content based on the filename of the file and provides the file content back to the system. The second computer system includes a processor, and memory, which contains instructions that when executed by the processor, cause the processor to direct the second computer system to receive file content of a file. The system determines a filename of the file and determines file metadata from the filename of the file. The file metadata includes a file size of the file, a random seed for generating content of the file, and modification information of the file. The system then verifies the file content of the file based on the file metadata and the filename of the file.
Further features of the disclosure, its nature and various advantages, will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
To provide an overall understanding of the disclosure, certain illustrative implementations will now be described, including systems and methods for generating files in a virtual file system. However, it will be understood by one of ordinary skill in the art that the systems and methods described herein may be adapted and modified as is appropriate for the application being addressed and that the systems and methods described herein may be employed in other suitable applications, including networked computing systems, data center systems, and cloud computing systems, and that such other additions and modifications will not depart from the scope thereof.
In order to determine network capacity and bandwidth of network 110, data transfers between multiple network systems are performed. The data transfers may be used to test single or multiple routes through network 110 between the different network systems. For example, data from network system 102 is sent over network 110 to network system 104. The data sent between the network systems may include data files stored within network system 102. Systems and applications within network system 102 provide the data files which are received by network system 104.
Network system 200 may include processor 202, memory 208, and storage system 210. Data bus 206 and communication path 204 may allow communication between each of these components together in any combination, and is not limited to the components shown in
Processor 202 in network system 200 may act as the control circuitry which reads instructions from either memory 208 or storage system 210, to perform the operations of network system 200. Memory 208 includes non-transitory memory which may be implemented as volatile or non-volatile memory, such as FLASH memory, ROM, RAM, or other memory storing technologies. Storage system 210 includes non-transitory data storing devices, such as electromagnetic storage devices, mechanical storage devices, and volatile or non-volatile storage devices. Storage system 210 may also be connected to network system 200 through network 110.
When a transfer of data is performed between multiple network systems, such as between network systems 102 and 104, the data is provided by storage system 210. The performance of the data transfer is dependent on performance characteristics of storage system 210 and file system 214 that provides the data being transferred. Examples of performance characteristics are characteristics of the storage system 210, such as access times, seek times, transfer times of each read and write access from storage system 210, and network related overheads of storage system 210, if storage system 210 communicates through a network, and software overheads of storage system 210 or file system 214, such as execution time of firmware in storage system 210 or execution time of the file system 214 API when accessing files within storage system 210. For example, the data transfer rate of transferring a data file 302 may be based on read/write transfer rates, read/write seek times, and read/write access times of accessing data files 302 within storage system 210.
The performance characteristics of storage system 210 may limit the maximum transfer rate of a data transfer, preventing network 110 from being tested for its maximum network capacity. Furthermore, it may be difficult to determine the network capacity of network 110 because storage system 210 may not contain enough stored data to meet the maximum network capacity of network 110. Therefore, in some implementations, a virtual file system may be implemented by computing system 212 to generate and verify data files, to determine the network capacity of network 110. Memory 208 may be used to store the generated data files, instead of storage system 210. Memory 208 may have better performance characteristics than storage system 210, allowing higher maximum transfer rates to be achieved, which can meet the maximum network capacity of network 110. Moreover, by using memory 208, data transfers which test the network capacity and bandwidth of network 110 may be offloaded from storage system 210 onto memory 208, freeing up valuable resources of storage system 210 for other applications in the network systems. Additionally, by using a virtual file system, the throughput of network system 200, factoring out delays of storage system 210 and file system 214, may be determined. This allows us to determine the true performance of an application or service without delays introduced by storage system 210 or file system 214.
Similar to a file system 214 on a storage system 410, the virtual file system 424 provides information about test files 430 managed by the virtual file system 424. The difference is that the test files 430 on the virtual file system 424 do not necessarily correspond to actual files stored in memory 408. The test files 430 are created on demand, when an application requests a test file 430 through the API for the virtual file system 424. Test files 430, unlike regular files 220, may include only the filename and may be missing certain file characteristics of the test file, such as the content of the test file 430.
The content of test file 430 may be generated on demand, thereby allowing the content to not be stored in memory 408, which would utilize valuable memory space. In some implementations, only the requested content of test file 430 needs to be generated and not the entire test file 430, which reduces memory consumption. In some implementations, the entire test file 430 may be generated when a request for test file 430 is received. Generating the content of a test file 430 on demand also allows the virtual file system 424 to generate an unlimited amount of data to be transferred, along with a virtually unlimited number of test files 430, since the only data which needs to be stored are the filenames of test files 430. Though test files 430 may be generated by the virtual file system 424, file characteristics of test file 430 may be generated allowing test file 430 to be used like a regular data file 220.
Like filenames 308 of regular files 302, a filename 508 is a string of characters which identifies a test file 502 and is unique within a virtual file system 424. An example of a filename 508 of a test file 502 is shown in
Virtual file system identifier 540 indicates whether a file received by a network system, such as network systems 102 or 104, was generated by a virtual file system 424. By using a special keyword, such as “/virtual/”, applications may filter out and identify that the received file is a test file 502 and process it accordingly. For example, a network system may track test files 502 more easily since all of the test files 502 would have “/virtual/” in its absolute path. Real files 302 and test files 502 may be differentiated based on identifying the virtual file system identifier 540. Furthermore, when system resources or data transfers of other applications require more utilization of network 110 or network systems 102 or 104, the virtual file system identifier 540 may identify test files 502 and either cancel or pause the applications which are using these test files 502.
Source identifier 544 indicates the source network system, such as network system 102, from which test file 502 was generated. By identifying the source network system which test file 502 came from, debugging of errors may be performed by traced back from the destination network system to the source network system. Source identifier 544 also allows applications to identify network systems which have a virtual file system 424. If more test files 502 are requested, an application knows that an identified source network system, such as source network system 102, may provide them.
Transfer ID 548 allows an application to track sessions from which test files 502 were created. For example, if a request to generate a thousand test files 502 was received by virtual file system 424, virtual file system 424 may set transfer ID 548 to a specific identification value, such as “/transfer—2321”. Each of the test files 502 generated may have the same transfer ID 548 within its absolute path, allowing applications to identify and track the test files 502 related to the specific transfer ID 548.
Timestamp 554 corresponds to the file time and date 524. Since test file 502 may have file characteristics 500 stored in virtual file system 424, file characteristics 500 may need to be generated. One of these file characteristics 500 may be file dates 524. Timestamp 554 may be used as file date 524 of test file 502. If an application requests file date 524, timestamp 554 may be used to generate file date 524.
File size 560 identifies the size 516 of test file 502. In a file 302 from a non-virtual file system 214, the file size 316 would be a file characteristic 300 which corresponds to the size of the content 332 of the file 302. However, since the test file 502 may not have content stored in memory 408, the file size 560 may be used to generate the actual file size 516 of test file 502.
Random number generator seed 566 provides a seed value for a random number generator to generate content 532 of test file 502. The random number generator may be implemented as a pseudorandom number generator, such as a deterministic random bit generator, which receives the random number generator seed value 566 and provides deterministic pseudorandom values. This allows virtual file system 424 to generate and reproduce content 532 of test file 502 at different instances when needed.
A pre-determined data size of test files 620 is determined to be generated, and is produced by virtual file system 610. Filename 508, which includes the random number generator seed 566 and file size 560, may be used to generate data content 532 for each test file 620 and 630 using a pseudorandom number generator. These test files 620 and 630 are then transferred over network 110 and received by network system 642 and stored into memory 646. Receiving network system 642 receives test files 630 and processes them using its own virtual file system 650. Test files 620 and 630 may be identified using filename 508 of test file 620 and 630. For example, filename 508 may include virtual file system identifier 540 indicating to virtual file system 650 that a received data file is a test file 630. Network system 642 may then utilize filename 508 of test file 630 to verify contents 532 of the received test file 630. Since filename 508 includes random number generator seed 566 and file size 560, a pseudorandom number generator may be used to generate verification data content of received test file 630 and verify the contents 532 of the received test files 630. If contents 532 of the received test file 630 and the generated verification data content do not match, a failure notification may be generated indicating a failure has occurred during the transfer.
In some implementations, a master system may be implemented to configure both the sending network system 602 and the receiving network system 642 for the transfer. The master system may then be configured to determine the network capacity and bandwidth of the network 110. The failure notification of the network systems 602 and 642 may be received by the master system to determine the appropriate actions to take, such as determining where the error in the transfer occurred, or determining the network capacity of the network.
In some implementations, the pre-determined data size of test files 620 may be set to infinite, or a large value which may not be met. The amount of data to be sent may be based on determining whether a pre-determined network capacity or bandwidth threshold has been met. Data for test files 620 would be generated and transferred until an indication that one of the thresholds has been met. For example, if the network bandwidth value settles at a specific value for a pre-determined amount of time, then the network bandwidth and capacity limit may have been reached, and the value of the network bandwidth or capacity may be determined by the settled value.
A request for a test file 502 may include a read offset and read request length. The read offset provides a method for requesting certain parts of test file 502. For example, the read offset allows a request for file content 532 starting at the middle of test file 502. The read offset may be used with random number generator seed 566 to determine where in the sequence of content generated by a pseudorandom number generator to start generating file content 532. The read request length provides a method for requesting a certain amount of data from test file 502. For example, if test file 502 has a file size 560 of 50 megabytes, the read length may be set to 20 megabytes allowing a request for only 20 megabytes of test file 502. The read request length may also be used by the pseudorandom number generator to generate only a certain amount of file content 532. Either one or both of the read offset and read request length may be omitted in the request. An omitted read offset or read request length may be set as a default value. For example, if the read offset and read request length is omitted, the request may receive the entire file content 532 of test file 502. If the read offset is omitted, the read offset may be set to the beginning of test file 502. If the read request length is omitted, the read request may be set to the amount of data between the read offset and the end of test file 502.
In some implementations, virtual file system 610 may determine if a valid read offset or read request length was requested. The read offset and the read request length may be compared with file size 560 of test file 502. If the read offset added to the read request length is greater than file size 560 of test file 502, then the request is invalid and a failure notification may be generated, indicating to the requestor that an error has occurred.
It will be apparent to one of ordinary skill in the art that aspects of the present disclosure, as described above, may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement aspects consistent with the principles of the disclosure is not limiting of the invention. Thus, the operation and behavior of the aspects of the disclosure were described without reference to the specific software code—it being understood that one of ordinary skill in the art would be able to design software and control hardware to implement the aspects based on the description herein.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Further, certain portions of the disclosure may be implemented as “logic” or a “component” that performs one or more functions. This logic may include hardware, such as an application specific integrated circuit or a field programmable gate array, software, or a combination of hardware and software.
While operations are depicted as being performed either by a file system or a separate application which uses an API to access the file system, the operations may be performed by either the file system or application and may be performed in conjunction with one other.
This application claims the benefit under 35 U.S.C. §119(e) of U.S. Provisional Application No. 61/578,661 filed Dec. 21, 2011, which is hereby incorporated by reference herein in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
6393435 | Gartner et al. | May 2002 | B1 |
7725437 | Kirshenbaum et al. | May 2010 | B2 |
7739240 | Saito et al. | Jun 2010 | B2 |
7856437 | Kirshenbaum | Dec 2010 | B2 |
20040009813 | Wind | Jan 2004 | A1 |
20040111390 | Saito et al. | Jun 2004 | A1 |
20040111441 | Saito et al. | Jun 2004 | A1 |
20090037500 | Kirshenbaum | Feb 2009 | A1 |
20110035376 | Kirshenbaum | Feb 2011 | A1 |
20120284317 | Dalton | Nov 2012 | A1 |
Number | Date | Country | |
---|---|---|---|
61578661 | Dec 2011 | US |